如何调用randomForest预测与ROCR一起使用?

时间:2012-07-16 16:10:07

标签: r random-forest

我很难理解如何构建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对象是一个列表对象,其中包含两个名为:aggregate和persons的类。我不明白这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?

2 个答案:

答案 0 :(得分:1)

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

  

预测包含的矢量,矩阵,列表或数据框   预测。

     

标签包含true的矢量,矩阵,列表或数据框   班级标签。必须与'预测'具有相同的尺寸。

您当前正在将变量y_n传递给predictions参数,并且对我来说看起来像labels参数的无意义。

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

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

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

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

答案 1 :(得分:0)

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