当使用我的sklearn分类器的预测函数时,我想看看它用于预测的概率分布,以估计置信度量。
我使用以下简单的分类器配置:
clf = SGDClassifier(loss='log',penalty='l2',alpha=1e-3, n_iter=5, random_state=42).fit(X, Y)
对于我正在使用的预测:
predicted = clf.predict(X_test)
proba = clf.predict_proba(X_test)[0]
但是当观察概率分布'proba'时,我意识到具有最大概率值的类并不总是与'预测'变量中的类相同。这是为什么?如何获得预测函数中使用的相同概率分布?
答案 0 :(得分:2)
来自SGDClassifier.predict_proba()
文档:
loss=”modified_huber”
的二进制概率估算值由(clip(decision_function(X), -1, 1) + 1) / 2
给出。对于其他损失函数,有必要通过用sklearn.calibration.CalibratedClassifierCV
包裹分类器来执行适当的概率校准。
在您的示例代码中,您使用的是loss="log"
,但没有按照指示包装您的分类器,这可能就是您在predict()
和{{1}之间看到差异的原因}}