更新:dual_coef_ 是关键,为您提供决策函数中支持向量的系数。 “每个支持向量都用于 n_class - 1 个分类器。每行中的 n_class - 1 个条目对应于这些分类器的对偶系数。” .
看看本节的最后(1.4.1.1),表格解释清楚了http://scikit-learn.org/stable/modules/svm.html#multi-class-classification)
实现细节也让我很困惑。多类决策函数中支持向量的系数是非平凡的。
但是,每当我想详细了解所选支持向量的特定属性时,我都会使用以下经验法则:
y[svm.support_]
输出:
array([0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
通过这种方式,您可以了解(可能出于调试目的)哪个支持向量对应于哪个类。当然你也可以检查支持向量:
X[svm.support_]
我的直觉是,正如它的名字所示,你从所涉及的类别中抽取样本子集。假设我们有 3 个类别 A、B 和 C:
- A vs. B --> 它为您提供了来自 A 和 B 的多个支持向量 (a,a,a,b,b,...)
- A 与 C --> 相同... a,a,a,c,c,c,c(可能之前重复了一些 'a')
- B 与 C --> 同上
所以svm.support_vectors_ 返回所有支持向量,但是它在decision_function 中的使用方式对我来说仍然很棘手,因为我不确定它是否可以使用例如来自的支持向量A vs. B 当做 A vs. C 时 - 我找不到实现细节 (http://scikit-learn.org/stable/modules/generated/sklearn.multiclass.OneVsOneClassifier.html#sklearn.multiclass.OneVsOneClassifier.decision_function)