首页 > 解决方案 > 来自 sklearn 的关于 SVC 对象的 `decision_function_shape` 参数的说明

问题描述

问题

对象的参数似乎对输出本身完全没有决定性,而只是重塑了每个分类器的分数数组decision_function_shapesklearn.svm.SVC但是有什么方法可以理解数组在对象的基本实现中是如何转换的(OvO 策略和ovr默认参数decision_function_shape

观察

用于多类分类的 SVC 实施为使用一对一策略。所以我们得到了n类的 n-choose-2分类器。回顾一下:

ovo = SVC()                                     # (n choose 2) classifiers
ovo_bis = SVC(decision_function_shape='ovo')    # (n choose 2) classifiers
ovr =  OneVsRestClassifier(SVC())               # n classifiers


ovo.decision_function([one_instance])           # return array of len n
ovo_bis.decision_function([one_instance])       # return array of len (n choose 2)
ovr.decision_function([one_instance])           # return array of len n

标签: pythonmachine-learningscikit-learnsvm

解决方案


从 OvO 分类器集合到 OvR 决策函数的转换发生在函数中_ovr_decision_function来源在这里。总而言之,每个涉及类的 OvO 分类器都会i对每个样本是否属于 类i进行投票,这些投票被统计,得票最多的类获胜;为了打破平局,置信水平(OvO 决策函数)被纳入,再次在 OvO 分类器中总计,现在缩放到适合仅打破平局的范围。


推荐阅读