使用 scikitlearn 的 LinearSVC 分类器时如何启用概率估计
how to enable probability estimates when using scikitlearn's LinearSVC classifier
如何以类似于 sklearn.svm.SVC
的 probability=True
选项的方式从 sklearn.svm.LinearSVC
模型中获得预测的概率估计,该选项允许 predict_proba()
我需要避免SVC
的基础 libsvm
的二次拟合惩罚,因为我的训练集很大。
sklearn.svm.LinearSVC
没有您正确注意到的 predict_proba
方法。
不过,您可以尝试以下技巧来规避这个缺点:
from sklearn.svm import LinearSVC
from sklearn.calibration import CalibratedClassifierCV
svm = CalibratedClassifierCV(LinearSVC())
svm
CalibratedClassifierCV(base_estimator=LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,
intercept_scaling=1, loss='squared_hinge', max_iter=1000,
multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,
verbose=0),
cv=3, method='sigmoid')
生成的 svm
模型确实有 predict_proba
方法可用。
您可以阅读更多关于 CalibratedClassifierCV
如何以类似于 sklearn.svm.SVC
的 probability=True
选项的方式从 sklearn.svm.LinearSVC
模型中获得预测的概率估计,该选项允许 predict_proba()
我需要避免SVC
的基础 libsvm
的二次拟合惩罚,因为我的训练集很大。
sklearn.svm.LinearSVC
没有您正确注意到的 predict_proba
方法。
不过,您可以尝试以下技巧来规避这个缺点:
from sklearn.svm import LinearSVC
from sklearn.calibration import CalibratedClassifierCV
svm = CalibratedClassifierCV(LinearSVC())
svm
CalibratedClassifierCV(base_estimator=LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,
intercept_scaling=1, loss='squared_hinge', max_iter=1000,
multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,
verbose=0),
cv=3, method='sigmoid')
生成的 svm
模型确实有 predict_proba
方法可用。
您可以阅读更多关于 CalibratedClassifierCV