2016-08-22 32 views
0

我試圖使用ctreeparty獲取條件分類樹。樹運行良好,但我無法找到任何有關如何從樹中看到surrogete分裂結果的信息。如何獲得ctree模型中的代理拆分,R中的派對包

該模型的腳本是:

ctree(occurrence ~ ., data = type, controls = ctree_control(maxsurrogate = 3)) 

誰能幫我看看surrogete分裂?謝謝!

回答

0

首先,我建議您在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.1varid = 2model.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" 
+0

非常感謝,阿希姆!這對我幫助很大! – phil