我使用来自scikit学习的线性支持向量机(LinearSVC)来解决二进制分类问题。我知道LinearSVC可以给我预测的标签和决策得分,但我想要概率估计(标签中的置信度)。由于速度的原因,我想继续使用LinearSVC (与具有线性内核的sklearn.svm.SVC相比)使用逻辑函数将决策分数转换为概率是否合理?
import sklearn.svm as suppmach
# Fit model:
svmmodel=suppmach.LinearSVC(penalty='l1',C=1)
predicted_test= svmmodel.predict(x_test)
predicted_test_scores= svmmodel.decision_function(x_test)
我想检查一下,简单地将概率估计为1/ (1 + exp(-x))是否有意义,其中x是决策得分。
或者,有没有其他选项wrt分类器,我可以用来有效地做到这一点?
谢谢。
发布于 2016-09-27 05:19:44
scikit learn提供了CalibratedClassifierCV,可以用来解决这个问题:它允许将概率输出添加到LinearSVC或任何其他实现decision_function方法的分类器:
svm = LinearSVC()
clf = CalibratedClassifierCV(svm)
clf.fit(X_train, y_train)
y_proba = clf.predict_proba(X_test)
用户指南上有一个很好的section。默认情况下,CalibratedClassifierCV+LinearSVC将为您提供普拉特缩放,但它也提供了其他选项(保序回归方法),而且它并不局限于支持向量机分类器。
发布于 2018-06-12 21:43:14
如果您真正需要的是置信度度量,而不是实际概率度量,则可以使用LinearSVC.decision_function()
方法。请参阅documentation。
https://stackoverflow.com/questions/26478000
复制相似问题