我正在尝试使用ctree
中的party
来获取条件分类树。这棵树运作良好,但是我无法找到有关如何从这棵树中看到那些血管分裂结果的信息。
该模型的脚本是:
ctree(occurrence ~ ., data = type, controls = ctree_control(maxsurrogate = 3))
任何人都可以帮我看看男性分裂吗?谢谢!
答案 0 :(得分:1)
首先,我建议您在ctree()
包中使用partykit
的重新实现,该重新实现已经过简化和改进,并且还具有更清洁的树基础结构。这有助于提取代理分裂。作为一个可重复的例子,让我们使用
library("partykit")
ct <- ctree(Species ~ ., data = iris, maxsurrogate = 3)
现在ct
中树的每个内部节点都有一个$surrogates
元素(最多)3 partysplit
个对象。例如,如果我想在第3个节点中提取第二个代理分割,我可以这样做:
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
处从model.frame(ct)
Sepal.Length
(即breaks = 6.1
)分裂。较小的值将转到第一个子节点,其余值转到第二个子节点。
要以人性化的形式获取此信息,您可以:
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"