在基于 LIBSVM 的 scikit.smv.SVC 中启用概率估计
Posted
技术标签:
【中文标题】在基于 LIBSVM 的 scikit.smv.SVC 中启用概率估计【英文标题】:Enable Probability Estimates in scikit.smv.SVC based on LIBSVM 【发布时间】:2018-06-19 02:44:53 【问题描述】:在 LIBSVM 中,svmtrain
中的 -b
标志用于启用 SVC 或 SVR 模型的概率估计训练。为了得到测试集对应的结果,我们还将-b
的结果设置在svmpredict
中
例如,在 MATLAB 中,我们将编写以下代码来训练和测试启用概率估计:
model = svmtrain(train_labels, train_set, '-b 1')
[result, accuracy, prob] = svmpredict(test_labels, test_set, '-b 1')
但是,在 scikit-learn 库中初始化 SVC 时,我们只能在训练时设置 -b
标志,这与在 svmtrain
上设置 -b
标志相同:
clf = scikit.svm.SVC(probability=True)
为了在 scikit-learn 中进行测试,我使用 clf.predict(test_set)
来获取课程。但是,当我将svmpredict
与-b 1
标志一起使用时,这会产生不同的结果。
在使用svmpredict
进行测试期间设置-b
标志的scikit-learn svm 中的等效项是什么?
【问题讨论】:
是的,这是预期的,因为 predict() 不使用概率。它在此处的文档中提到:scikit-learn.org/dev/modules/svm.html#scores-and-probabilities 【参考方案1】:Scikit-learn 不使用标志来预测分类器的概率,有一个额外的函数可用,称为 .predict_proba
。看看documentation。
概率是使用Platt scaling 确定的,这是一种将分类器的任意输出组合成类概率的方法。
也可以在这里查看答案:How does sklearn.svm.svc's function predict_proba() work internally?
【讨论】:
以上是关于在基于 LIBSVM 的 scikit.smv.SVC 中启用概率估计的主要内容,如果未能解决你的问题,请参考以下文章
在基于 LIBSVM 的 scikit.smv.SVC 中启用概率估计