6

我已经设法使用该包构建了一个决策树模型,tidymodels但我不确定如何提取结果并绘制树。我知道我可以使用rpartandrpart.plot包来实现相同的目标,但我宁愿使用tidymodels它,因为这是我正在学习的。下面是一个使用mtcars数据的例子。

library(tidymodels)
library(rpart)
library(rpart.plot)
library(dplyr) #contains mtcars

#data
df <- mtcars %>%
    mutate(gear = factor(gear))


#train/test
set.seed(1234)

df_split <- initial_split(df)
df_train <- training(df_split)
df_test <- testing(df_split)


df_recipe <- recipe(gear~ ., data = df) %>%
  step_normalize(all_numeric())


#building model
tree <- decision_tree() %>%
   set_engine("rpart") %>%
   set_mode("classification")

#workflow
 tree_wf <- workflow() %>%
   add_recipe(df_recipe) %>%
   add_model(tree) %>%
   fit(df_train) #results are found here 

rpart.plot(tree_wf$fit$fit) #error is here

我得到的错误说Error in rpart.plot(tree_wf$fit$fit) : Not an rpart object这是有道理的,但我不知道是否缺少我将结果转换为rpart.plot允许我绘图的格式的包或步骤。这可能是不可能的,但任何帮助将不胜感激。

4

2 回答 2

9

您也可以使用该workflows::pull_workflow_fit()功能。它使代码更优雅一点。

tree_fit <- tree_wf %>% 
  pull_workflow_fit()
rpart.plot(tree_fit$fit)
于 2020-08-22T06:11:33.057 回答
4

以下作品(注意额外的$fit):

rpart.plot(tree_wf$fit$fit$fit)

不是一个非常优雅的解决方案,但它确实绘制了树。

用欧洲防风草 0.1.3 和 rpart.plot 3.0.8 测试。

于 2020-08-21T21:37:29.937 回答