我正在学习一个scikit学习的例子(分类比较),并与糊涂了predict_proba和decision_function.
他们通过使用Z = clf.decision_function()或绘制轮廓来绘制分类结果 Z = clf.predict_proba().
这两者有什么不同?是这样每种分类方法都有两个分数?
哪一个更适合解释分类结果,我该如何从两个中进行选择?
Ami*_*ory 32
后者predict_proba是(软)分类器的方法,输出实例在每个类中的概率.
前者,decision_function找到分离超平面的距离.例如,(n)SVM分类器找到将空间分成与分类结果相关联的区域的超平面.给定一个点,该函数找到分隔符的距离.
我猜这predict_prob在你的情况下更有用,一般来说 - 另一种方法更具体的算法.
ser*_*inc 10
你的榜样是
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]
Run Code Online (Sandbox Code Playgroud)
所以代码使用decision_function它是否存在.在SVM情况下,predict_proba计算(在二进制情况下)
使用Platt缩放
这既"昂贵"又具有"理论问题".这就是为什么decision_function在这里使用.(正如@Ami所说,这是边距 - 超平面的距离,无需进一步计算即可访问).在SVM的情况下,建议
用
decision_function而不是predict_proba.
还有其他decision_function的:SGDClassifier's.这里,predict_proba取决于损失功能,并且decision_function普遍可用.
| 归档时间: |
|
| 查看次数: |
21340 次 |
| 最近记录: |