python sklearn分类器使用的概率分布是多少

时间:2017-05-03 01:48:54

标签: python scikit-learn svm

当使用我的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'时,我意识到具有最大概率值的类并不总是与'预测'变量中的类相同。这是为什么?如何获得预测函数中使用的相同概率分布?

1 个答案:

答案 0 :(得分:2)

来自SGDClassifier.predict_proba()文档:

  

loss=”modified_huber”的二进制概率估算值由(clip(decision_function(X), -1, 1) + 1) / 2给出。对于其他损失函数,有必要通过用sklearn.calibration.CalibratedClassifierCV包裹分类器来执行适当的概率校准。

在您的示例代码中,您使用的是loss="log",但没有按照指示包装您的分类器,这可能就是您在predict()和{{1}之间看到差异的原因}}