【问题标题】:Is there a way to get the instances used for classification in random forest tree in R?有没有办法在 R 中获取用于随机森林树分类的实例?
【发布时间】:2016-05-08 13:44:56
【问题描述】:

R 中 randomForest 包中的 getTree 函数显示随机森林中使用的特定树的结构。

这是鸢尾花数据集上的示例

library(randomForest)
data(iris)
rf <- randomForest(Species ~ ., iris)
getTree(rf, 1)

这显示了 500 棵树 #1 的输出:

   left daughter right daughter split var split point status prediction
1              2              3         3        2.50      1          0
2              0              0         0        0.00     -1          1
3              4              5         4        1.65      1          0
4              6              7         4        1.35      1          0
5              8              9         3        4.85      1          0
6              0              0         0        0.00     -1          2
7             10             11         2        3.10      1          0
8             12             13         4        1.55      1          0
9              0              0         0        0.00     -1          3
10             0              0         0        0.00     -1          3
11             0              0         0        0.00     -1          2
12            14             15         2        2.55      1          0
13             0              0         0        0.00     -1          2
14            16             17         2        2.35      1          0
15             0              0         0        0.00     -1          3
16             0              0         0        0.00     -1          3
17             0              0         0        0.00     -1          2

叶子是具有 0 个叶子女儿和 0 个右女儿的节点。

有没有一种方法可以获取这些叶子中的实例(虹膜数据集的行)?
就像节点 2 一样,它是一个叶子,它有来自 iris 数据集的实例 2,3,4 都归类为 1。

任何帮助将不胜感激。

【问题讨论】:

    标签: r machine-learning random-forest feature-extraction feature-selection


    【解决方案1】:

    基于这个答案:

    Extract a subset of tree from random forest model for prediction

    可能有一个我不知道的访问功能,但以下手动方法似乎有效:

    rf <- randomForest(Species ~ ., iris, keep.forest=TRUE)
    pr_nodes <- attr(predict(rf, iris, nodes=TRUE),'nodes')
    
    pr_nodes[,1] # array of 150 node assignments for 1st of 500 trees
    

    【讨论】:

    • 谢谢,但你能解释一下你的代码的第二行吗?什么是 attr 以及为什么要写 nodes = TRUE?如果您能稍微解释一下您的代码,那将非常有帮助。谢谢
    • @rmania 你会发现help(或?)函数非常有用。例如,尝试help(attr) 找出attr() 的作用,或尝试?predict 找出nodes=TRUE 的作用。我可以剪切和粘贴文档,但如果你有一个 R 控制台,它就在你面前。
    • 不,我了解 attr 和 predict 的作用,我只想了解使用 predict 函数获取实例背后的逻辑是什么。据我所知,预测函数用于从 RF 的结果中进行预测,但它对获取实例有何帮助?对不起,如果这是一个愚蠢的问题,但我有点困惑
    • @C8H10N4O2 我也对此感兴趣,使用预测函数获取实例背后的逻辑是什么。 predict 函数不用于从 RF 的结果中进行预测吗?它对取回实例有何用处?
    猜你喜欢
    • 2017-11-03
    • 2020-08-16
    • 2019-10-07
    • 2017-12-24
    • 1970-01-01
    • 2021-03-24
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多