我想要一种方法将rpart树对象转换为嵌套的列表列表(树形图)。理想情况下,每个节点中的属性将包括rpart对象中的信息(杂质,变量和用于拆分的规则,汇集到该节点的观察数量等)。
查看rpart $ frame对象,我不清楚如何阅读它。有什么建议吗?
微小的例子:
library(rpart)
fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
fit$frame
var n wt dev yval complexity ncompete nsurrogate yval2.V1 yval2.V2 yval2.V3 yval2.V4 yval2.V5 yval2.nodeprob
1 Start 81 81 17 1 0.17647059 2 1 1.00000000 64.00000000 17.00000000 0.79012346 0.20987654 1.00000000
2 Start 62 62 6 1 0.01960784 2 2 1.00000000 56.00000000 6.00000000 0.90322581 0.09677419 0.76543210
4 <leaf> 29 29 0 1 0.01000000 0 0 1.00000000 29.00000000 0.00000000 1.00000000 0.00000000 0.35802469
5 Age 33 33 6 1 0.01960784 2 2 1.00000000 27.00000000 6.00000000 0.81818182 0.18181818 0.40740741
10 <leaf> 12 12 0 1 0.01000000 0 0 1.00000000 12.00000000 0.00000000 1.00000000 0.00000000 0.14814815
11 Age 21 21 6 1 0.01960784 2 0 1.00000000 15.00000000 6.00000000 0.71428571 0.28571429 0.25925926
22 <leaf> 14 14 2 1 0.01000000 0 0 1.00000000 12.00000000 2.00000000 0.85714286 0.14285714 0.17283951
23 <leaf> 7 7 3 2 0.01000000 0 0 2.00000000 3.00000000 4.00000000 0.42857143 0.57142857 0.08641975
3 <leaf> 19 19 8 2 0.01000000 0 0 2.00000000 8.00000000 11.00000000 0.42105263 0.57894737 0.23456790
(函数ggdendro ::: dendro_data.rpart可能会有所帮助,但是我无法真正解决问题)
答案 0 :(得分:1)
这是一个带有函数rpart2dendro的GitHub要点,用于将类“rpart”的对象转换为树形图。请注意,分支在输出对象中没有加权,但是递归修改树形图的“高度”属性以获得比例分支长度应该相当简单。 Kyphosis示例在底部提供。