plot - 如何在 r 中用 xgboost 和 decision_tree 绘制树?
问题描述
在使用 tidymodels 工作流程后,我试图在 R 中绘制决策树,但我很难找到要使用的好功能和/或好的模型。在这样的代码之后,你如何编写一个情节?
xgboost_spec <-
boost_tree(trees = tune(), min_n = tune(), tree_depth = tune(), learn_rate = tune(),
loss_reduction = tune(), sample_size = tune()) %>%
set_mode("classification") %>%
set_engine("xgboost")
xgboost_workflow <-
workflow() %>%
add_recipe(data_recipe) %>%
add_model(xgboost_spec)
xgboost_tune <-
tune_grid(xgboost_workflow, resamples = data_folds, grid = 10)
final_xgboost <- xgboost_workflow %>%
finalize_workflow(select_best(xgboost_tune, "roc_auc"))
xgboost_results <- final_xgboost %>%
fit_resamples(
resamples = data_folds,
metrics = metric_set(roc_auc, accuracy, sensitivity, specificity),
control = control_resamples(save_pred = TRUE)
)
还是在决策树代码之后?
tree_spec <- decision_tree(
cost_complexity = tune(),
tree_depth = tune(),
min_n = tune()) %>%
set_engine("rpart") %>%
set_mode("classification")
tree_workflow <-
workflow() %>%
add_recipe(data_recipe) %>%
add_model(tree_spec)
tree_grid <- grid_regular(cost_complexity(),
tree_depth(),
min_n(), levels = 4)
tree_tune <- tree_workflow %>%
tune_grid(
resamples = data_folds,
grid = tree_grid,
metrics = metric_set(roc_auc, accuracy, sensitivity, specificity)
)
final_tree <- tree_workflow %>%
finalize_workflow(select_best(tree_tune, "roc_auc"))
tree_results <- final_tree %>%
fit_resamples(
resamples = data_folds,
metrics = metric_set(roc_auc, accuracy, sensitivity, specificity),
control = control_resamples(save_pred = TRUE)
)
是否可以?或者我应该在之后使用模型last_fit()
吗?
谢谢!
解决方案
我认为绘制 xgboost 模型没有多大意义,因为它是增强树(很多很多树),但您可以绘制单个决策树。
关键是大多数用于树结果可视化的包都需要您修复调用对象。
library(tidymodels)
#> Registered S3 method overwritten by 'tune':
#> method from
#> required_pkgs.model_spec parsnip
data(penguins)
penguins <- na.omit(penguins)
cart_spec <-
decision_tree() %>%
set_engine("rpart") %>%
set_mode("classification")
cart_fit <-
cart_spec %>%
fit(sex ~ species + bill_length_mm + body_mass_g, data = penguins)
cart_fit <- repair_call(cart_fit, data = penguins)
library(rattle)
#> Loading required package: bitops
#> Rattle: A free graphical interface for data science with R.
#> Version 5.4.0 Copyright (c) 2006-2020 Togaware Pty Ltd.
#> Type 'rattle()' to shake, rattle, and roll your data.
fancyRpartPlot(cart_fit$fit)
由reprex 包于 2021-08-07 创建 (v2.0.0 )
拨浪鼓包并不是唯一的东西。ggparty是另一个不错的选择。
这确实意味着您必须使用欧洲防风草模型和预处理器,而不是工作流程。您可以在此处查看有关如何调整欧洲防风草加预处理器的教程。
推荐阅读
- android-studio - 在不改变colorPrimery,kotlin - android的情况下无法改变按钮的颜色
- http - 如果您要使用 向您的 HTML 文件添加 5 个图像,它将导致多少额外的 HTTP GET 调用?
- python - Python / Java:如何反转字符串单词但不是特殊字符
- java - Jsoup在Jav中获取没有id和类的元素
- python - ValueError - “x_train_data”不是三维形状的
- python - 从python中扩展之前的最后一个索引中的文件名中提取年份
- r - 如何将 geom_rect 与日期一起使用?
- plot - 在 Octave 的多线绘图标签中更改一行的字体大小
- datatables - Bootstrap5 和数据表安装
- python - 具有矩阵输入和向量输出形状问题的 CNN 模型