2016-03-03 72 views
0

我使用的是rpart pacakge R,我想爲葉節點提取前2個預測類,而不僅僅是最好的。 以iris數據爲例:來自決策樹的前n類葉節點

fit <- rpart(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, data = iris) 
print(fit) 

,輸出是:

n= 150 

node), split, n, loss, yval, (yprob) 
     * denotes terminal node 

1) root 150 100 setosa (0.33333333 0.33333333 0.33333333) 
    2) Petal.Length< 2.45 50 0 setosa (1.00000000 0.00000000 0.00000000) * 
    3) Petal.Length>=2.45 100 50 versicolor (0.00000000 0.50000000 0.50000000) 
    6) Petal.Width< 1.75 54 5 versicolor (0.00000000 0.90740741 0.09259259) * 
    7) Petal.Width>=1.75 46 1 virginica (0.00000000 0.02173913 0.97826087) * 

我想知道每個葉節點,節點說7),什麼是最好的第2種預測。默認情況下,它只打印出最好的預測種類virginica

更一般地,我想知道前n個預測類別。

是否可以從fit中提取此信息而不更改rpart的源代碼?

回答

0

你可以找到他們通過

> fit$frame$yval2 
              nodeprob 
[1,] 1 50 50 50 0.3333333 0.33333333 0.33333333 1.0000000 
[2,] 1 50 0 0 1.0000000 0.00000000 0.00000000 0.3333333 
[3,] 2 0 50 50 0.0000000 0.50000000 0.50000000 0.6666667 
[4,] 2 0 49 5 0.0000000 0.90740741 0.09259259 0.3600000 
[5,] 3 0 1 45 0.0000000 0.02173913 0.97826087 0.3066667 

或者你也可以從

fancyRpartPlot(fit) 

從撥浪鼓包看到它 - 它是花斑癬

enter image description here

我想你」 d想要這個更復雜的東西,但如果樹簡單 - ish,圖表會做。

+0

它有幫助嗎? –