因此,我正在使用sci-kit学习RandomForestClassifier将天文来源的数据分为三类。为了使问题更简单明了,我仅在测试集中使用了两个来源,并获得了predict_prob()分数:

predictions = rf_model.predict(data_test)
probab =  rf_model.predict_proba(data_test)

print(probab)
print('True Classifications:', classif_test.values)
print('Predictions', predictions)


给我以下内容:

[[0.29 0.69 0.02]
 [0.08 0.92 0.  ]]
True Classifications: ['HMXB' 'AGN']
Predictions ['HMXB' 'HMXB']


班级顺序是[AGN, HMXB, SNR]。问题在于这些预测中的一个是错误的,而另一个是正确的。

我有几个问题。
(a)如何判断哪个predict_prob()分数与错误的预测相对应?
(b)predict_prob()到底描述了什么?该模型的分类被认为是正确的可能性还是其他?
(b)导致不正确的预测的类别的高概率分数是什么意思?我的数据集仅仅是太小了,还是有办法提高预测的概率?

因此对于我的数据,我有46个HMXB,17个AGN和3个SNR。每个源都具有三个属性。我知道这是一个很小的数据集,但是我想知道的是,对于RandomForest或其他机器学习算法来说,它是否太小而无法给出准确的结果。

最佳答案

对于问题(b),predict_prob()到底描述了什么?
Forecast_prob()将给出标签的概率。
例如,如果您具有三个标签['A','B','C'],并且predict_prob()给出[0.29,0.69,.02],则意味着该特定数据的结果具有0.29成为“ A”的概率,则为“ B”的概率为0.69,为“ C”的概率为0.02。

对于问题(a),我如何分辨哪个predict_prob()分数对应于错误的预测?
从您发布的输出

[[0.29 0.69 0.02]
 [0.08 0.92 0.  ]]
Predictions ['HMXB' 'HMXB']


它清楚地表明每个列表中的第二项对应于“ HMXB”。还有另外两个概率(第一项和最后一项),我们需要查看数据并确定。

是的,您的数据很小,而且非常不平衡。因为与其他两个相比,您有很多“ HMXB”样本。尝试获取其他标签的更多样本。

10-07 17:22