【问题标题】:Difference between predict vs predict_proba in scikit-learnscikit-learn 中 predict 与 predict_proba 之间的区别
【发布时间】:2020-07-25 20:03:48
【问题描述】:

假设我创建了一个模型,我的目标变量是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 和 predict_proba。如果在索引 3 中,我得到上述结果和predict_proba 的结果,在预测结果的索引 3 中我应该看到 0。是这样吗?我试图了解在同一模型上同时使用 predictpredict_proba 是如何相互关联的。

【问题讨论】:

  • 请发布一个同时使用predictpredict_proba 的实际代码示例,而不是“suppose”,这样我们就可以根据实际(和不是假设的)案例。
  • 谢谢,我会编辑我的问题
  • 仍不清楚。 m1 应该包含单个数字(类),而在这里您将其显示为包含概率。请花点时间,关注并相应地更新/澄清问题(想法是通过显示 both @987654335 的实际示例来摆脱“假设” @ 和 predict_probasame 测试样本上并将问题集中在这个上,但你还没有这样做)。

标签: python machine-learning scikit-learn classification prediction


【解决方案1】:
  • predict() 用于预测实际类(在您的情况下为012 之一)。
  • predict_proba() 用于预测类概率

根据您分享的示例输出,

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

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

所有类的返回估计值按标签排序 类。

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

【讨论】:

  • @Giorgos,请注意我的问题是关于这两者的确切索引之间的关系。另外,我想知道您的答案是否有错字,有两个作为 predict() 的输出
猜你喜欢
  • 2016-08-01
  • 2023-03-22
  • 2018-01-05
  • 2016-09-03
  • 2021-11-22
  • 2022-01-01
  • 1970-01-01
  • 2013-11-27
  • 2016-12-08
相关资源
最近更新 更多