如何在ctree模型中获得代理拆分,R中的派对包
How to get the surrogate splits in a ctree model, party package in R
我正在尝试使用 party
中的 ctree
来获取条件分类树。这棵树运行良好,但我找不到任何关于如何从这棵树中查看代理分裂结果的信息。
模型的脚本是:
ctree(occurrence ~ ., data = type, controls = ctree_control(maxsurrogate = 3))
谁能帮我看看代孕分裂?谢谢!
首先,我建议您在 partykit
包中使用 ctree()
的重新实现,它已经过简化和改进,并且树的基础结构也更加清晰。这有助于提取代理拆分。作为一个可重现的例子,让我们使用
library("partykit")
ct <- ctree(Species ~ ., data = iris, maxsurrogate = 3)
现在 ct
中树的每个内部节点都有一个 $surrogates
元素(最多)3 partysplit
个对象。例如,如果我想提取第 3 个节点中的第 2 个代理拆分,我可以这样做:
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"
这意味着该代理在 model.frame(ct)
(即 Sepal.Length
)的 varid = 2
分裂点 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"
我正在尝试使用 party
中的 ctree
来获取条件分类树。这棵树运行良好,但我找不到任何关于如何从这棵树中查看代理分裂结果的信息。
模型的脚本是:
ctree(occurrence ~ ., data = type, controls = ctree_control(maxsurrogate = 3))
谁能帮我看看代孕分裂?谢谢!
首先,我建议您在 partykit
包中使用 ctree()
的重新实现,它已经过简化和改进,并且树的基础结构也更加清晰。这有助于提取代理拆分。作为一个可重现的例子,让我们使用
library("partykit")
ct <- ctree(Species ~ ., data = iris, maxsurrogate = 3)
现在 ct
中树的每个内部节点都有一个 $surrogates
元素(最多)3 partysplit
个对象。例如,如果我想提取第 3 个节点中的第 2 个代理拆分,我可以这样做:
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"
这意味着该代理在 model.frame(ct)
(即 Sepal.Length
)的 varid = 2
分裂点 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"