我正在尝试使用party
中的ctree
来获得条件分类树。这棵树运行得很好,但我找不到任何关于如何从这棵树中查看代理拆分结果的信息。
模型的脚本是:
ctree(occurrence ~ ., data = type, controls = ctree_control(maxsurrogate = 3))
有人能帮我看看代孕者的分裂吗?谢谢
首先,我建议您在partykit
包中使用ctree()
的重新实现,该包经过了精简和改进,并且为树提供了更干净的基础设施。这有助于提取代理拆分。作为一个可重复的例子,让我们使用
library("partykit")
ct <- ctree(Species ~ ., data = iris, maxsurrogate = 3)
现在,ct
中树的每个内部节点都有一个由(最多(3个partysplit
对象组成的$surrogates
元素。例如,如果我想提取第三个节点中的第二个代理拆分,我可以这样做:
nodeapply(ct, ids = 3, function(n) n$surrogates[[2]])
## $`3`
## $varid
## [1] 2
##
## $breaks
## [1] 6.1
##
## $index
## [1] 1 2
##
## $right
## [1] TRUE
##
## $prob
## NULL
##
## $info
## NULL
##
## attr(,"class")
## [1] "partysplit"
这意味着该代理在varid = 2
中在分离点breaks = 6.1
处从model.frame(ct)
(即Sepal.Length
(分离。较小的值将分配给第一个子节点,其余的分配给第二个子节点。
要以人类友好的形式获得这些信息,您可以执行以下操作:
sp32 <- nodeapply(ct, ids = 3, function(n) n$surrogates[[2]])
character_split(sp32[[1]], model.frame(ct))
## $name
## [1] "Sepal.Length"
##
## $levels
## [1] "<= 6.1" "> 6.1"