我很难理解如何构建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?
答案 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
,您告诉函数保留所有树的预测,而不是森林中的预测。