为什么来自随机森林分类器 .predict() 和 .predict_proba() 的预测不匹配?

Why prediction from randomforest classifier .predict() and .predict_proba() don't match?

我训练了一个简单的随机森林分类器,然后当我使用相同的测试输入测试预测时:

rf_clf.predict([[50,0,500,0,20,0,250000,1.5,110,0,0,2]])

rf_clf.predict_proba([[50,0,500,0,20,0,250000,1.5,110,0,0,2]])

第一行returnsarray([1.]),而第二行returnsarray([[0.14, 0.86]])其中预测是第一个浮点数0.14对吗?

这两个怎么不匹配?我有点困惑。谢谢。

看看 sklearn.ensemble.RandomForestClassifierdocumentation 部分,特别是 predict_proba 方法。

Returns:形状为(n_samples、n_classes)的ndarray,或n_outputs的列表。如果 n_outputs > 1,则此类数组。输入样本的 class 概率。 classes 的顺序对应于属性 classes_.

中的顺序

您得到的输出 (array([[0.14, 0.86]])) 因此是样本中存在的每个 classes 的概率列表,对于每个样本输入。 predict() 方法简单地为每个输入预测一个 class(所以这就是为什么你得到 array([1.]) 作为 return)。

predict()函数returns特征所属的class和predict_proba()函数returns特征属于不同输出的概率classes.

示例: predict() 函数的输出为您提供该特征属于 class 1(即)array([1.])

的结果

predict_proba() 函数的输出为您提供属于每个输出 class 数组 ([[0.14, 0.86]]) 的特征的概率。特征属于 class 0 的概率为 14%,特征属于 class 1 的概率为 86%。

参考文档:predict() docs, predict_proba() docs