scikit-learn中的predict_proba和decision_function有什么区别?



我正在研究一个scikit-learn示例(分类器比较(,并对predict_probadecision_function感到困惑。

他们通过使用Z = clf.decision_function()Z = clf.predict_proba()绘制等值线来绘制分类结果。

这两者之间有什么区别?是不是每个分类方法都有两者中的任何一个作为分数?

哪一个更适合解释分类结果,我应该如何从两者中选择?

后者predict_proba是一种(软(分类器输出实例在每个类中的概率的方法。

前者,decision_function,找到到分离超平面的距离。例如,a(n( SVM 分类器查找将空间划分为与分类结果关联的区域的超平面。此函数给定一个点,查找到分隔符的距离。

我猜predict_prob在您的情况下更有用,一般来说 - 另一种方法更特定于算法。

你的例子是

if hasattr(clf, "decision_function"):
    Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])
else:
    Z = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])[:, 1]

因此,如果存在,代码将使用decision_function。在 SVM 情况下,计算predict_proba(在二进制情况下(

使用普拉特缩放

既"昂贵"又有"理论问题"。这就是这里使用decision_function的原因。(正如@Ami所说,这是保证金—— 到超平面的距离,无需进一步计算即可访问(。在 SVM 的情况下,建议

使用 decision_function 而不是 predict_proba

还有其他decision_function s:SGDClassifier' s。在这里,predict_proba取决于损失函数,decision_function是普遍可用的。

相关内容

  • 没有找到相关文章

最新更新