0
我試圖使用ctree
從party
獲取條件分類樹。樹運行良好,但我無法找到任何有關如何從樹中看到surrogete分裂結果的信息。如何獲得ctree模型中的代理拆分,R中的派對包
該模型的腳本是:
ctree(occurrence ~ ., data = type, controls = ctree_control(maxsurrogate = 3))
誰能幫我看看surrogete分裂?謝謝!
我試圖使用ctree
從party
獲取條件分類樹。樹運行良好,但我無法找到任何有關如何從樹中看到surrogete分裂結果的信息。如何獲得ctree模型中的代理拆分,R中的派對包
該模型的腳本是:
ctree(occurrence ~ ., data = type, controls = ctree_control(maxsurrogate = 3))
誰能幫我看看surrogete分裂?謝謝!
首先,我建議您在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"
這意味着在splitpoint breaks = 6.1
在varid = 2
從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"
非常感謝,阿希姆!這對我幫助很大! – phil