我正在使用scars中的linearsvm训练我的数据集 . 我可以计算/获得样品在给定标签下分类的概率吗?
例如,使用 SGDClassifier(loss="log")
来拟合数据,启用predict_proba方法,该方法为每个样本 x
提供概率估计的矢量 P(y|x)
:
>>> clf = SGDClassifier(loss="log").fit(X, y)
>>> clf.predict_proba([[1., 1.]])
输出:
array([[ 0.0000005, 0.9999995]])
在使用 svm.LinearSVC
(多类分类)时,是否有任何类似的函数可用于计算预测概率 . 我知道有一种方法 decision_function
来预测这种情况下样本的置信度分数 . 但是,有什么方法可以使用这个决策函数计算样本的概率估计值?
2 回答
不,
LinearSVC
不会计算概率,因为没有训练这样做 . 使用sklearn.linear_model.LogisticRegression
,它使用与LinearSVC
相同的算法但具有日志丢失 . 它使用标准logistic function进行概率估计:(出于同样的原因,
SGDClassifier
只会在loss="log"
时输出概率,而不是使用其默认的损失函数,这会导致它学习线性SVM . )多类别分类是一对一分类 . 对于
SGDClassifier
,当返回对应于特定类的超平面的距离时,概率计算为Refer to code了解详情 .
你可以实现类似的功能,对于我来说对于LinearSVC似乎是合理的,通过它可能需要一些理由 . 请参阅文档中提到的论文
附:来自"Is there 'predict_proba' for LinearSVC?"的评论: