如何使用rpart获得百分比

时间:2016-09-26 21:59:07

标签: r rpart

所以我正在开发一个带有决策树的项目,我需要知道如何获得每个节点的百分比。

这是我的近似代码:

fit <- rpart(Y ~ a + b + c, method = "class", data = example, control = rpart.control(minsplit=5))

我的主要问题是如何从rpart输出中获取示例中每一行的百分比估计值。

我查看了以下帖子How to get percentages from decision tree for each node中给出的答案,并根据我的理解(如果我错了请纠正我),33.3%的数据属于2级,36%属于4级但是我的问题不同的是,我需要知道的是第2课的入学机会百分比是多少,第4课的几率是多少等等。

感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

我们有一个无法使用R rattle library的环境,其中包括fancyRpartPlot-使用prp绘制rpart树的包装器,因此我发现要做的方法是使用function to access the rpart object frame,如下所示:

rm(list = ls())
library(rpart)
node.fun <- function(x, labs, digits, varlen) {    
    avg  <- sprintf("%0.1f", x$frame$yval)
    pct   <- sprintf("%1.1f%%",100*x$frame$wt/x$frame$wt[1]) 
    rows <- format(x$frame$n, big.mark=",")
    paste0(avg, "\n", " n=", rows,"   ", pct)
}
fit <- rpart(skips ~ Opening + Solder + Mask + PadType + Panel, data = solder, method = "anova")
rpart.plot::prp( fit, main="Formatted averages (no scientific notation) and percentages calculated", varlen=0, faclen=0,fallen.leaves=TRUE, shadow.col="gray", nn=TRUE, type = 4, extra = 101, box.palette="Greens", compress=TRUE, tweak=1,node.fun = node.fun)

给出的rpart图/树图像类似于:

library(rattle)
fancyRpartPlot(fit)