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_probapredict 的输出? “predict() 返回的值是否必须是类之一?” - 绝对是的。这就是分类的定义。如果你有“连续变化的变量”,你应该使用回归。但我想我在这里遗漏了一些东西,如果我可以问的话,你的课程是什么意思? 通过类,我指的是 MLPClassifier 实例的 classes_ 属性。它包含输入的选定值(不确定它们是如何选择的)。 【参考方案1】:

定义

predict - 将您的输入分类为标签。

predict_proba - 返回模型中每个类的预测概率。

示例

如果这是一个二元问题,并且您的类标记为 01。然后对于您正在测试的某些输入,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 的混淆概率

如何使用 Libsvm - SVM_Predict.exe 计算“准确度”

pytorch 中分类网络损失函数

sklearn中predict()和predict_proba()的返回值