0

我将使用 iris 表的示例来解释我的问题。假设我想在萼片宽度和物种之间创建一棵树。为此,我将使用以下代码:

ctree(Species~Sepal.Width,data=iris)->a
plot(a,type="simple")

问题是,如果我想做一个数据框,例如计算每个节点中的案例数量(从 0 到 2.9;2.9 到 3.3 等),我发现这样做的唯一方法是创建手动创建一个新向量,然后使用dcastortable函数。

这个解决方案的问题是,如果我有一个更大的树结果,那可能会非常困难。你知道任何其他解决方案吗?非常感谢。

4

1 回答 1

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"
于 2018-12-15T17:00:51.957 回答