MLPClassfier predict 和 predict_proba 似乎不一致
Posted
技术标签:
【中文标题】MLPClassfier predict 和 predict_proba 似乎不一致【英文标题】:MLPClassfier predict and predict_proba seem inconsistent 【发布时间】:2020-05-15 17:24:24 【问题描述】:我正在通过 lbfgs 求解器使用 MLPClassifier。
如果我使用 predict_proba() 方法和 classes_ 属性计算预期值,它与 predict() 方法返回的值不匹配。
哪个更准确?
predict() 返回的值是否必须是类之一?它不会在类之间进行插值吗?我想预测一个不断变化的变量。
【问题讨论】:
您能否在发现这种不一致的情况下显示来自predict_proba
和predict
的输出?
“predict() 返回的值是否必须是类之一?” - 绝对是的。这就是分类的定义。如果你有“连续变化的变量”,你应该使用回归。但我想我在这里遗漏了一些东西,如果我可以问的话,你的课程是什么意思?
通过类,我指的是 MLPClassifier 实例的 classes_ 属性。它包含输入的选定值(不确定它们是如何选择的)。
【参考方案1】:
定义
predict
- 将您的输入分类为标签。
predict_proba
- 返回模型中每个类的预测概率。
示例
如果这是一个二元问题,并且您的类标记为 0
和 1
。然后对于您正在测试的某些输入,predict
将返回一个类,比如说1
。
但是,predict_proba
将为您提供此输入映射到类 1
的预测概率,在本示例中,该类可能是 0.8
。这就是它们的值不匹配的原因。
哪个更准确?
您无法真正比较它们的准确性。但是,您可以将predict_proba
视为您的模型对特定类的置信度。例如,如果您有三个班级,并且您测试了一个样本。然后你会收到三个实数的输出:
[0.11, 0.01, 0.88]
您可以将此视为您的模型对该输入映射到第三类具有很高的置信度,因为它的概率最高为0.88
。
相比之下,对于其他一些输入值,您的模型可能会输出以下内容:
[0.33, 0.32, 0.34]
您的模型仍然预测第三类,因为它的概率最高。但是,第三类是 true 类的置信度较低。
【讨论】:
predict() 返回的值是否必须是类之一?它不会在类之间进行插值吗?我想预测一个不断变化的变量。 是的。分类器预测一个类别。如果您试图预测一个连续的实数值,则必须使用回归量。见这里scikit-learn.org/stable/modules/generated/…以上是关于MLPClassfier predict 和 predict_proba 似乎不一致的主要内容,如果未能解决你的问题,请参考以下文章
如何在 python 中使用 .predict() 方法进行线性回归?
scikit-learn 的 svm 的 predict_proba 的混淆概率