我正在建立一个随机福雷斯特分类器,我想返回分类和相关概率。我的结果变量是1
或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
是否可以切换它?因此,它显示积极的等级&#34; 1&#34;第一λ
答案 0 :(得分:1)
probability
按类返回概率(这里有两个类,因此有两列)。
这是以这种方式建立的,以实现多类分类。
如果您想要result == 1
的概率,只需取probability
由于你有非常不平衡的类(0.8%的类),你的分类器倾向于预测它总是0 ...因此,对于大多数例子,result==1
的概率接近于0。这就是为什么你的概率看起来不像概率。
关于probability
的索引,rownames(df.test)
的索引为df.test
。我猜您从df.test
随机分割df
。所以索引不是从1开始。