本文介绍了将LinearSVC的决策函数转换为概率(Scikit学习Python)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用来自SCRKIT学习的线性支持向量机(LinearSVC)来解决二值分类问题。我知道LinearSVC可以给我预测的标签和决策得分,但我想要概率估计(对标签的信心)。由于速度的原因,我想继续使用LinearSVC(与使用线性内核的sklearn.svm.SVC相比)使用Logistic函数将决策分数转换为概率是否合理?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分类器来高效地执行此操作吗?
谢谢。
推荐答案
我看了一下sklearn.svm.*家族中的接口。以下所有型号,例如
- sklearn.svm.SVC
- sklearn.svm.NuSVC
- sklearn.svm.SVR
- sklearn.svm.NuSVR
有一个公共的interface,它提供一个
probability: boolean, optional (default=False)
参数添加到模型。如果此参数设置为True,则libsvm将基于Platt Scaling的思想在支持向量机的输出上训练概率转换模型。正如您所指出的,转换的形式类似于逻辑函数,但是在后处理步骤中学习了两个特定的常量A
和B
。另请参阅此stackoverflow帖子以了解更多详细信息。
我实际上不知道为什么这个后处理不能用于LinearSVC。否则,您只需调用predict_proba(X)
来获取概率估计。
predict_proba
的上述四种支持向量机变体。 这篇关于将LinearSVC的决策函数转换为概率(Scikit学习Python)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!