【问题标题】:Extract variable labels from rpart decision tree从 rpart 决策树中提取变量标签
【发布时间】:2018-10-21 07:19:52
【问题描述】:

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

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

【问题讨论】:

  • 如果你还没有,我先搜索str(myTree)的结果。
  • 几乎可以肯定有一种方法可以获取以截断形式打印的信息。查看手册可能是了解如何操作的好方法。
  • 试试rpart.plot
  • rpart.utils 包,函数rpart.subrules.table 会帮你解决

标签: r decision-tree rpart


【解决方案1】:

这里的一个问题是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) 的输出来查看。

因此我们可以提取上面的内容

(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

【讨论】:

猜你喜欢
  • 2015-01-08
  • 2019-10-08
  • 2015-06-28
  • 2016-07-23
  • 2013-02-09
  • 2021-05-30
  • 2015-01-13
  • 2013-05-01
  • 2020-04-02
相关资源
最近更新 更多