scikit-learn 中预测与 predict_proba 之间的区别

Difference between predict vs predict_proba in scikit-learn

假设我创建了一个模型,我的目标变量是 012。似乎如果我使用 predict,答案是 0、1 或 2。但是如果我使用 predict_proba,我会得到一行,每行有 3 列,如下所示,例如

   model = ... Classifier       # It could be any classifier
   m1 = model.predict(mytest)
   m2= model.predict_proba(mytest)

   # Now suppose  m1[3] = [0.6, 0.2, 0.2]

假设我同时使用预测和 predict_proba。如果在索引 3 中,我得到上面的结果 predict_proba,在预测结果的索引 3 中我应该看到 0。是这种情况吗?我试图了解在同一模型上同时使用 predictpredict_proba 如何相互关联。

  • predict() 用于预测 实际 class (在你的情况下 012).
  • predict_proba()用于预测class概率

根据您分享的示例输出,

  • predict() 会输出 class 0 因为 0 的 class 概率是 0.6.
  • [0.6, 0.2, 0.2]predict_proba 的输出,它简单地表示 class 的概率 class 是 012分别是0.60.20.2

现在,正如文档中提到的 predict_proba,生成的数组是根据您一直使用的标签排序的:

The returned estimates for all classes are ordered by the label of classes.

因此,在您的 class 标签为 [0, 1, 2] 的情况下,predict_proba 的相应输出将包含相应的概率。 0.6是实例被class化为0的概率,0.2是实例被分类为1和[=13=的概率]分别。


更全面的解释,请参考TDS上的文章What is the difference between predict() and predict_proba() in scikit-learn