使用 SVC 的 OneVsRestClassifier 和带有 decision_function_shape='ovr' 的 SVC 有什么区别?



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

相关:Scikit learn多类分类支持向量机

我在另见标题中对LinearSVC的文档进行了一些澄清,其中提到了SVC。

SVC

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

此外,SVC多类模式使用一对一方案实现,而线性SVC使用一对一方案实现对其他人。可以通过SVC实现其中一个与其余的使用sklearn.multiclass.OneVsRestClassifier包装器。

此外,SVC将所有训练委托给底层libsvm库,该库将多类情况处理为'OvO'(即使decision_function_shape = 'ovr')。

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

有趣的事实:onevsonecclassifier还返回一个决策函数,该函数与OvR的形状一致。

相关内容

  • 没有找到相关文章

最新更新