如何修改R中ctree终端节点绘图?移除$err与$distribution
移除ctree终端节点中的$err和$distribution的解决方法
我来帮你搞定这个ctree绘图的问题!要去掉partykit绘制决策树时终端节点里的$err和$distribution信息,最灵活的方式是自定义终端面板函数——因为默认的node_terminal并没有直接的开关参数来隐藏这些内容,自己写面板函数就能完全控制显示的信息。
1. 定义自定义终端面板函数
我们创建一个只保留需要内容(比如预测值)的面板函数,完全跳过错误和分布信息:
# 自定义终端面板:仅显示预测值(可按需调整内容) my_terminal_panel <- function(node, digits = 1, id = FALSE, ...) { # 获取节点的预测结果 pred_val <- node$prediction # 构建要显示的文本(这里只保留预测值,可自行添加其他信息) display_text <- paste0("预测值: ", round(pred_val, digits)) # 在节点中绘制文本 grid::grid.text(display_text, gp = gpar(fontsize = 5)) # 可选:如果需要显示节点ID,取消下面的注释 # if (id) { # grid::grid.text(paste0("节点 ", node$id), x = 0.05, y = 0.05, # just = c("left", "bottom"), gp = gpar(fontsize = 5)) # } }
2. 修改绘图代码
把原来的terminal_panel = node_terminal(...)替换成我们自定义的函数即可:
library(openxlsx) library('partykit') # 读取数据并构建决策树 data <- read.xlsx("2005.XLSX", sheet = 1) tree <- ctree(inc_total~., data=data, control = ctree_control(maxdepth = 5)) # 使用自定义面板绘制决策树 plot(tree, type='simple', inner_panel=node_inner(tree, id=FALSE), terminal_panel = my_terminal_panel(tree, digits=1, id=FALSE, gp=gpar(fontsize=5))) # 计算MSE(这部分保持不变) mean((data$inc_total - predict(tree))^2)
额外调整(可选)
如果需要在终端节点添加其他信息(比如节点内的样本量),可以修改display_text的内容:
display_text <- paste0("样本量: ", node$n, "\n预测值: ", round(pred_val, digits))
这样就能完全控制终端节点显示的内容,去掉不需要的$err和$distribution啦!
内容的提问来源于stack exchange,提问作者Patrick Star
相关产品推荐
相关产品推荐

