我将使用虹膜表的示例来说明我的问题。假设我要在萼片宽度和物种之间创建一棵树。为此,我将使用以下代码:
ctree(Species~Sepal.Width,data=iris)->a
plot(a,type="simple")
问题是,如果我想做一个数据帧,例如计算每个节点中的案例数量(从0到2.9;从2.9到3.3,依此类推),那是我发现这样做的唯一方法通过手动创建一个新矢量,然后使用dcast
或table
函数。
此解决方案的问题是,如果我得到更大的树结果,可能会非常困难。您知道其他解决方案吗?非常感谢。
答案 0 :(得分:0)
实际上,由ctree
创建的聚会结构已存储了该信息。以您的示例为例,a[1]$fitted[,1]
具有每个点最终指向哪个叶子。因此,您可以使用以下方法获取每个叶子上的点数:
table(a[1]$fitted[,1])
3 4 5
57 56 37
如果您尝试查看叶子编号附带的规则,则可以使用:
partykit:::.list.rules.party(a)
3
"Sepal.Width <= 3.3 & Sepal.Width <= 2.9"
4
"Sepal.Width <= 3.3 & Sepal.Width > 2.9"
5
"Sepal.Width > 3.3"