绘制 tidymodels 的决策树结果
Plotting decision tree results from tidymodels
我已经成功地使用 tidymodels
包构建了一个决策树模型,但我不确定如何提取结果并绘制树。我知道我可以使用 rpart
和 rpart.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
允许我绘制的格式的包或步骤.这可能是不可能的,但我们将不胜感激。
以下作品(注意多余的$fit
):
rpart.plot(tree_wf$fit$fit$fit)
这不是一个非常优雅的解决方案,但它确实绘制了树。
使用防风草 0.1.3 和 rpart.plot 3.0.8 进行测试。
您也可以使用workflows::pull_workflow_fit()
功能。它使代码更优雅。
tree_fit <- tree_wf %>%
pull_workflow_fit()
rpart.plot(tree_fit$fit)
我已经成功地使用 tidymodels
包构建了一个决策树模型,但我不确定如何提取结果并绘制树。我知道我可以使用 rpart
和 rpart.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
允许我绘制的格式的包或步骤.这可能是不可能的,但我们将不胜感激。
以下作品(注意多余的$fit
):
rpart.plot(tree_wf$fit$fit$fit)
这不是一个非常优雅的解决方案,但它确实绘制了树。
使用防风草 0.1.3 和 rpart.plot 3.0.8 进行测试。
您也可以使用workflows::pull_workflow_fit()
功能。它使代码更优雅。
tree_fit <- tree_wf %>%
pull_workflow_fit()
rpart.plot(tree_fit$fit)