有没有办法在 R 中获取用于随机森林树分类的实例?
Posted
技术标签:
【中文标题】有没有办法在 R 中获取用于随机森林树分类的实例?【英文标题】:Is there a way to get the instances used for classification in random forest tree in 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。
任何帮助将不胜感激。
【问题讨论】:
【参考方案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 的结果中进行预测吗?它对取回实例有何用处?以上是关于有没有办法在 R 中获取用于随机森林树分类的实例?的主要内容,如果未能解决你的问题,请参考以下文章