【问题标题】:How to call randomForest predict for use with ROCR?如何调用 randomForest predict 与 ROCR 一起使用?
【发布时间】:2012-07-15 12:47:02
【问题描述】:

我很难理解如何构建 ROC 曲线,现在我得出的结论是,我可能没有正确创建模型。我在类属性“y_n”为 0 或 1 的数据集中运行随机森林模型。出于预测目的,我将数据集划分为 bank_training 和 bank_testing。 以下是我要做的步骤:

bankrf <- randomForest(y_n~., data=bank_training, mtry=4, ntree=2,
                  keep.forest=TRUE, importance=TRUE)
bankrf.pred <- predict(bankrf, bank_testing, type='response',
                  predict.all=TRUE, norm.votes=TRUE)

到目前为止我所做的是否正确?创建的 bankrf.pred 对象是一个列表对象,具有 2 个名为:聚合和个体的类。我不明白这两个类名是从哪里来的?此外,当我跑步时:

summary(bankrf.pred)
           Length Class  Mode     
aggregate  22606  factor numeric  
individual 45212  -none- character

这个摘要是什么意思?数据集(训练和测试)分别为 22605 和 22606。如果有人可以向我解释发生了什么,我将不胜感激。我认为这一切都有问题。

当我尝试使用 ROCR 设计 ROC 曲线时,我使用以下代码:

library(ROCR)
pred <- prediction(bank_testing$y_n, bankrf.pred$c(0,1))

Error in is.data.frame(labels) : attempt to apply non-function

我尝试创建 ROC 曲线的方式只是一个错误,还是从一开始就使用 randomForest?

【问题讨论】:

  • banrf.pred的结构在?predict.randomForest的文档中有完整的解释。
  • 我已经检查过了,根据它应该可以这样,但我仍然无法用 ROCR 绘制 roc 曲线,我认为模型应该有问题.
  • 好吧,您的问题没有包含有关您如何尝试创建 ROC 曲线或它究竟是如何不起作用的信息,因此任何人都很难帮助解决该问题。跨度>

标签: r random-forest


【解决方案1】:

您尝试使用的函数的文档包括对其两个主要参数的描述:

预测 包含 预测。

labels 一个向量、矩阵、列表或数据框,包含真正的 类标签。必须与“预测”具有相同的维度。

您当前正在将变量 y_n 传递给 predictions 参数,而在我看来 labels 参数的内容是无稽之谈。

预测将存储在随机森林模型的输出中。如?predict.randomForest 所述,它将是一个包含两个组件的列表。 aggregate 将包含整个森林的预测值,而individual 将包含每棵树的预测值。

所以你可能想做这样的事情:

predictions(bankrf.pred$aggregate, bank_testing$y_n)

看看它是如何工作的? 预测的值被传递给predictions参数,而“标签”或真值被传递给labels参数。

【讨论】:

  • 不……它又没用了。现在的错误是:预测格式无效。不过感谢您的回答!
  • @spektra 好吧,你得到的答案只会和你的问题的可重复性一样好。否则我们只是猜测。
  • 因子不是向量。您必须首先使用 as.numeric() 转换每个因素(预测或标签)。
  • @CS 看起来预测不能是一个因素,但标签可以(如果你查看代码,标签的情况是明确处理的)。
  • 好的。感谢您检查代码:) 我刚才和 OP 有同样的错误(我认为)并用 as.numeric() 修复它。
【解决方案2】:

如果你只是想获得预测的类,你应该从predict 中删除predict.all=TRUE 参数。通过使用predict.all=TRUE,您是在告诉函数保留所有树木的预测而不是森林的预测。

【讨论】:

    猜你喜欢
    • 2013-11-27
    • 1970-01-01
    • 2015-12-16
    • 2012-01-19
    • 2016-12-13
    • 2019-02-22
    • 1970-01-01
    • 2021-05-15
    • 2017-12-28
    相关资源
    最近更新 更多