繁体   English   中英

从 rpart 决策树中提取变量标签

[英]Extract variable labels from rpart decision tree

我已经使用 part 在具有数百个级别的分类变量的数据集上构建决策树。 树根据变量的选择值拆分这些变量。 我想检查进行拆分的标签。

如果我只运行决策树结果,控制台中列出拆分的显示会被截断,无论哪种方式,它都不是易于解释的格式(用逗号分隔)。 有没有办法将它作为 R 对象访问? 我愿意使用另一个包来构建树。

这里的一个问题是rpart包中的一些函数没有导出。 看来您要捕获函数rpart:::print.rpart的输出。 所以,从一个可重现的例子开始:

set.seed(1)
df1 <- data.frame(y=rbinom(n=100, size=1, prob=0.5),
                  x1=rbinom(n=100, size=1, prob=0.25),
                  x2=rbinom(n=100, size=1, prob=0.75))
(r1 <- rpart(y ~ ., data=df1))

给予

n= 100 

node), split, n, deviance, yval
      * denotes terminal node

1) root 100 24.960000 0.4800000  
  2) x1< 0.5 78 19.179490 0.4358974  
    4) x2>=0.5 66 15.954550 0.4090909 *
    5) x2< 0.5 12  2.916667 0.5833333 *
  3) x1>=0.5 22  5.090909 0.6363636  
    6) x2< 0.5 7  1.714286 0.4285714 *
    7) x2>=0.5 15  2.933333 0.7333333 *

现在,查看rpart:::print.rpart ,我们看到对rpart:::labels.rpart的调用,为我们提供了拆分(或上面输出中“行”的名称)。 n, deviance, yval等的值存储在r1$frame ,可以通过检查unclass(r1)的输出来unclass(r1)

因此我们可以提取上述内容

(df2 <- data.frame(split=rpart:::labels.rpart(r1), n=r1$frame$n))

给予

    split   n
1    root 100
2 x1< 0.5  78
3 x2>=0.5  66
4 x2< 0.5  12
5 x1>=0.5  22
6 x2< 0.5   7
7 x2>=0.5  15

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM