这个问题的其他答案/讨论没有任何问题,我只是想添加更多细节/上下文,以防其他用户遇到相同或类似的问题。
虽然新旧包中ctree()
功能的许多方面保持不变,以便于转换,但几乎所有的 R 和 C 代码都被重写和简化,内部表示是全新的。旧的返回了一个 S4 对象,它对于我们想要用它做的所有事情都不够灵活。新函数返回从通用类继承的类对象(用于在每个节点中具有常量拟合的递归分区)。party
partykit
ctree()
ctree()
"constparty"
"party"
可以用length()
方法查询节点数,用方法查询终端节点数width()
。该print()
方法还报告了节点的数量。最后,可以通过 查询节点 ID nodeids()
。对于只有一个根节点的树:
data("kyphosis", package = "rpart")
library("partykit")
ct1 <- ctree(Age ~ ., data = kyphosis)
length(ct1)
[1] 1
width(ct1)
[1] 1
对于更大的树:
(ct2 <- ctree(Number ~ ., data = kyphosis))
Model formula:
Number ~ Kyphosis + Age + Start
Fitted party:
[1] root
| [2] Start <= 15: 4.475 (n = 59, err = 152.7)
| [3] Start > 15: 2.909 (n = 22, err = 17.8)
Number of inner nodes: 1
Number of terminal nodes: 2
length(ct2)
[1] 3
width(ct2)
[1] 2
nodeids(ct2)
[1] 1 2 3
nodeids(ct2, terminal = TRUE)
[1] 2 3
包小插曲还提供了许多其他有用的细节。vignette("partykit", package = "partykit")
对包及其类进行了一般介绍;vignette("constparty", package = "partykit")
描述具有恒定拟合的树的类;并vignette("ctree", package = "partykit")
提供有关ctree()
.