原文链接:http://tecdat.cn/?p=24956
绘制分类或回归树的基本方法的 rpart() 函数只是调用 plot。然而,总的来说,结果并不漂亮。事实证明,一段时间以来,有一种更好的方法来绘制 rpart() 树。
我们可以大概浏览下如何实现,并且进一步研究。
代码语言:javascript复制# 绘制分类树图
library(rpart) # 流行的决策树算法
library(party) # 替代决策树算法
library(partykit) # 将rpart对象转换为二叉树
data# 获取一些数据
# 绘制大树
frm <- as.form
tee1 <- rpart
#
plot# 绘图很混乱
text
#
pr# 将对树进行绘图
vale=3 # 缩短变量名称
# 对树进行交互式修剪
pp$obj # 以交互方式修剪树形
pp # 显示新的树木
#
#-------------------------------------------------------------------
rpart# 一个更合理的树
prp# 一个快速绘图
fayRpPot# 花式绘图
#
#-------------------------------------------------------------------
# 绘制一棵用RevoScaleR构建的树
# 构建一个模型公式
names
X <- as.vector
frm <- as.form
# 运行模型
DTree
# 绘制树形图
prp
faRaPlt
数据描述
Hill, LaPan, Li和Haney(2007)开发了模型来预测高含量屏幕中哪些细胞被很好地分割。该数据由2019年的119次成像测量组成。最初的分析使用1009个进行训练,1010个作为测试集。
详细内容
结果类别包含在一个名为Class的因子变量中,水平为 "PS "表示分割不良,"WS "表示分割良好。
论文中使用的原始数据可以在Biomedcentral网站上找到。caret < 4.98的版本包含原始数据。现在的版本是经过修改的。首先,一些预测因子的几个离散版本(后缀为 "状态")被删除。第二,有几个最小值为0的倾斜预测因子(将受益于某种转换,如对数)。在这些字段中加入了1的常量值。AvgIntenCh2、FiberAlign2Ch3、FiberAlign2Ch4、SpotFiberCountCh4和TotalIntenCh2。
修剪和绘制树
加载数据后,脚本构建 rpart() 分类树。使用 plot() 绘制树会产生一些覆盖文本的黑云,这是您尝试绘制一棵大树所期望的典型结果。但是,pp() 在绘制树并仅使用默认设置显示其结构方面做得非常好。并且,使用指示 pr() 缩写变量名称的参数使绘图更具可读性。
接下来的几行代码展示了 pp() 的交互式修剪功能。分配对象 new.tree.1 的行 产生一个“实时”树图。使用鼠标修剪树,点击“退出”并重新绘制,您将得到一个相当不错的树顶部绘图。这是将树顶部的清晰图片获取到报告中的巧妙方法。
修剪后绘制更美观的树
tree.2,一个更合理的树,是仅仅接受rpart的结果。首先,使用默认设置使用 pp() 绘制这棵树,然后在下一行中,绘制该树。
此函数只是 pp() 函数的包装,但易于用于绘制分类树,并且是美学如何促进结果可视化交流的一个很好的例子。每个节点框显示分类、该节点上每个类的概率(即以该节点为条件的类的概率)以及该节点使用的观察百分比。请注意虚线的使用如何倾向于强调节点而不是树本身,以及底部的叶子排列如何帮助查看者猜测节点框中的百分比表示到达每个节点的观察百分比节点。(底行增加到 100%)。
脚本的最后几行使用函数构造了一个树,用于构建具有大量数据集的分类和回归树模型。