r-根据数据模型绘制决策树结果



我已经使用tidymodels包构建了一个决策树模型,但我不确定如何提取结果并绘制树。我知道我可以使用rpartrpart.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允许我绘制的格式。这可能是不可能的,但任何帮助都将不胜感激。

您还可以使用workflows::pull_workflow_fit()函数。它使代码更加优雅。

tree_fit <- tree_wf %>% 
pull_workflow_fit()
rpart.plot(tree_fit$fit)

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

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

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

用欧防风0.1.3和rpart.plot 3.0.8进行测试。

下面是一个映射到tidymodels当前状态的解决方案:

tree_fit_rpart <- extract_fit_engine(tree_wf)
rpart.plot(tree_fit_rpart)

相关内容

  • 没有找到相关文章

最新更新