有什么用SVC和SVC与decision_function_shape OneVsRestClassifier之间的差额="OVR"?

MBr*_*ski 17 python svm scikit-learn

我认为它应该是相同的,但对于方法decision_function()我得到不同的结果.只有SVC decision_function_shape='ovr'真的更快.

相关:Scikit学习支持向量机的多类分类

Viv*_*mar 5

我在提到SVC的另请参阅标题中获得了有关LinearSVC文档的一些说明。

SVC

支持向量机分类器使用libsvm的实现:

....

....

此外,SVC多类模式使用一种对一种方案实现,而LinearSVC使用一种对另一种方案。通过使用sklearn.multiclass.OneVsRestClassifier包装器,可以用SVC来实现一个。

....

同样,SVC将所有训练委托给基础libsvm库,该库将多类情况处理为'OvO'即使(decision_function_shape ='ovr')也是如此。

@delusionX问题中提到的它decision_function_shape只是为了与scikit API兼容。最有可能的是,所有其他估计量都将多类作为OvR处理,因此,当SVC与其他事物结合使用时(例如,在Pipeline,GridSearchCV或诸如OneVsRestClassifier之类的包装器中),返回OvO决策函数会破坏工作。别人的。但是我找不到明确写在任何地方的文字。

有趣的事实:OneVsOneClassifier还返回一个决策函数,该函数以OvR的形状进行确认。