我原以为它们应该是相同的,但是对于方法
相关链接:Scikit learn多类支持向量机分类
decision_function()
,我得到了不同的结果。并且只有decision_function_shape='ovr'
的SVC速度确实更快。相关链接:Scikit learn多类支持向量机分类
decision_function()
,我得到了不同的结果。并且只有decision_function_shape='ovr'
的SVC速度确实更快。SVC
使用libsvm实现支持向量机分类器:
....
....
此外,SVC使用一对一方案实现多类模式,而LinearSVC使用一对其余。 通过使用sklearn.multiclass.OneVsRestClassifier包装器,可以使用SVC实现一对其余。
....
此外,SVC将所有训练委托给底层的libsvm
库,该库将多类情况处理为'OvO'
(即使decision_function_shape='ovr')。
decision_function_shape
只是为了与scikit API兼容。很可能,所有其他估算器都将多类作为OvR处理,因此当SVC与其他内容结合使用时(例如在Pipeline、GridSearchCV或像OneVsRestClassifier这样的包装器中),返回OvO决策函数会破坏其他工作的效果。但我找不到任何明确写明的地方。
sklearn.svm.SVC
支持 Multiclass as One-Vs-One,无需使用任何元估计器(即OneVsOneClassifier
)。然而,当我们想要使用元估计器并进行 OneVsRest 多类分类时,仍然不清楚应该如何将SVC
与OneVsRestClassifier
结合使用。此外,在所有这些中,decision_function_shape: 'ovo'/'ovr'
的作用也不清楚。 - PeterB