2016-03-03 68 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

它有帮助吗? –