我正在构建一个 Random Forrest 分类器,我想返回分类和相关概率。我的结果变量是1
or 0
, 1 是我要跟踪的正类。
no_of_trees <- 50
rf.under <- randomForest(as.factor(result) ~ . ,
data=data_balanced_under,
importance=TRUE,
ntree=no_of_trees)
prediction <- predict(rf.under, df.test)
probability <- predict(rf.under, df.test, type="prob")
submit <- data.frame( predicted = prediction, actual = df.test$result)
我想要概率返回正面结果的概率,但是我得到:
> probability
0 1
242339 1.00 0.00
3356431 1.00 0.00
138327 1.00 0.00
111327 1.00 0.00
3307151 1.00 0.00
222414 1.00 0.00
1817297 1.00 0.00
3860922 1.00 0.00
1710532 1.00 0.00
在我的输出中。左边的这些数字是什么?我不确定它们是什么?我以为它们是行号,但是,为什么它们不从 1,2,3 .. 索引?我绑定了得到probability[,2]
我假设给我结果的概率,但也不起作用。
理想情况下,我想在submit
数据框中包含概率,但目前无法这样做。
此外,混淆矩阵给了我:
confusionMatrix(data = submit$predicted, reference = df.test$result , positive="1")
#Reference
Prediction 0 1
0 913730 160
1 50872 8219
有没有可能改变这个?所以它首先显示正类“1”?
probability
按类返回概率(这里有两个类,所以有两列)。这是以这种方式构建的,以实现多类分类。
如果你想要概率result == 1
只取第二列probability
由于您有高度不平衡的类(0.8%),您的分类器倾向于预测它始终为 0...因此result==1
对于大多数示例,您的概率接近 0。这就是为什么您的概率看起来不像概率的原因。
关于 的索引probability
,它是rownames(df.test)
的索引df.test
。我猜你是df.test
从df
. 所以索引不是从 1 开始的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句