如何根据决策树输出为GrooveLength与Asymmetry散点图的点着色
解决方法
你只需要先拿到决策树对全量样本的分类/节点归属结果,再把该结果作为散点图的颜色映射变量即可,以下是具体实现代码:
前置步骤:获取决策树输出结果
假设你构建的决策树模型变量名为dt_model,先为数据集新增列存储决策树输出结果:
# 方案1:按最终预测分类结果上色,执行这行 seedfull$dt_class <- predict(dt_model, newdata = seedfull, type = "class") # 方案2:如果需要按决策树终端节点路径分组上色(同一个分裂路径的样本同色),执行这行(仅适用于rpart构建的决策树) seedfull$dt_node <- predict(dt_model, newdata = seedfull, type = "node")
1. 基础plot函数实现(适配你当前的代码写法)
twopoints <- seedfull[,c(8,7)] # 按预测分类上色,你可以把dt_class换成dt_node实现按节点分组上色 plot(twopoints, col = as.factor(seedfull$dt_class), pch = 16, # 实心点样式更便于区分颜色 xlab = "GrooveLength", ylab = "Asymmetry") # 添加分类图例 legend("topright", legend = levels(as.factor(seedfull$dt_class)), col = seq_along(levels(as.factor(seedfull$dt_class))), pch = 16, title = "决策树分类结果")
2. ggplot2实现(效果更美观,自定义灵活)
library(ggplot2) ggplot(seedfull, aes(x = GrooveLength, y = Asymmetry)) + geom_point(aes(color = as.factor(dt_class)), size = 2) + # 同样可替换dt_class为dt_node labs(color = "决策树分类结果") + theme_bw()
如果需要自定义颜色,可以加scale_color_brewer(palette = "Set2")或者手动指定scale_color_manual(values = c("red","blue","green"))调整。
内容的提问来源于stack exchange,提问作者Xray25
相关产品推荐
相关产品推荐

