我使用 scikit learn (LinearSVC) 中的线性 SVM 来解决二元分类问题。我知道 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 是决策分数。
或者,还有其他选项可以用来有效地完成此任务吗?
Thanks.
scikit-learn 提供校准分类器CV http://scikit-learn.org/stable/modules/generated/sklearn.calibration.CalibratedClassifierCV.html#sklearn.calibration.CalibratedClassifierCV它可以用来解决这个问题:它允许将概率输出添加到 LinearSVC 或任何其他实现 Decision_function 方法的分类器:
svm = LinearSVC()
clf = CalibratedClassifierCV(svm)
clf.fit(X_train, y_train)
y_proba = clf.predict_proba(X_test)
用户指南很好section http://scikit-learn.org/stable/modules/calibration.html关于这一点。默认情况下,CalibrateClassifierCV+LinearSVC 将为您提供 Platt 缩放,但它还提供其他选项(等渗回归方法),并且不限于 SVM 分类器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)