2016-11-30 67 views
2

假設我用RPART構建了一個玩具樹模型,我怎樣才能得到樹的深度?如何在RPART模型中獲得樹的深度?

library(rpart) 
library(partykit) 
fit=rpart(factor(am)~.,mtcars,control=rpart.control(cp=0,minsplit = 1)) 
plot(as.party(fit)) 

我知道怎麼算的葉子,二叉樹,我們可以近似用葉片數的深度,但它不是直接在樹的深度。

sum(fit$frame$var=="<leaf>") 

回答

4

rpart包具有未導出函數tree.depth給出每個節點的深度在傳遞給它的節點號的向量。使用數據從問題:

nodes <- as.numeric(rownames(fit$frame)) 
max(rpart:::tree.depth(nodes)) 
## [1] 2 
+0

謝謝,這個答案是完美的。但你怎麼知道未提交的功能?你檢查了源代碼? – hxd1011

+0

是的。必須檢查來源。 https://github.com/cran/rpart/blob/4a009f14f2b342baa2df55854d578a45b16a17da/R/zzz.R –

+0

如果你檢查了源代碼,你能否看到你是否可以回答這個問題? http://stats.stackexchange.com/questions/248706/why-i-cannot-achieve-100-accuracy-in-my-simple-training-data-with-cart-model – hxd1011