gpt4 book ai didi

python - 使用 OneVsRestClassifier 时 sklearn.svm.SVC 的哪个 decision_function_shape?

转载 作者:太空狗 更新时间:2023-10-30 02:39:45 26 4
gpt4 key购买 nike

我正在做多标签分类,我试图预测问题的正确标签:

(X = 问题,y = X 中每个问题的标签列表)。

我想知道 sklearn.svm.SVCdecision_function_shape应与 OneVsRestClassifier 一起使用?

从文档中我们可以读到 decision_function_shape 可以有两个值 'ovo''ovr':

decision_function_shape : ‘ovo’, ‘ovr’ or None, default=None

Whether to return a one-vs-rest (‘ovr’) decision function of shape (n_samples, n_classes) as all other classifiers, or the original one-vs-one (‘ovo’) decision function of libsvm which has shape (n_samples, n_classes * (n_classes - 1) / 2). The default of None will currently behave as ‘ovo’ for backward compatibility and raise a deprecation warning, but will change ‘ovr’ in 0.19.

但我还是不明白:

# First decision_function_shape set to 'ovo'
estim = OneVsRestClassifier(SVC(kernel='linear', decision_function_shape ='ovo'))

# Second decision_function_shape set to 'ovr'
estim = OneVsRestClassifier(SVC(kernel='linear', decision_function_shape ='ovr'))

multi-label classification 应使用哪个decision_function_shape问题?

编辑: Question问类似的事情没有答案。

最佳答案

我认为应该使用哪个的问题最好视情况而定。这很容易成为您的 GridSearch 的一部分。但凭直觉,我会觉得就差异而言,你们会做同样的事情。这是我的推理:

OneVsRestClassifier 旨在针对所有其他类独立地对每个类建模,并为每种情况创建一个分类器。我对这个过程的理解是,OneVsRestClassifier 抓取一个类,并为一个点是否属于该类创建一个二进制标签。然后这个标签被输入到你选择使用的任何估计器中。我相信混淆来自于 SVC 也允许你做出同样的选择,但实际上这个实现的选择并不重要,因为你总是只会将两个类提供给 SVC

这是一个例子:

from sklearn.datasets import load_iris
from sklearn.multiclass import OneVsRestClassifier
from sklearn.svm import SVC

data = load_iris()

X, y = data.data, data.target
estim1 = OneVsRestClassifier(SVC(kernel='linear', decision_function_shape='ovo'))
estim1.fit(X,y)

estim2 = OneVsRestClassifier(SVC(kernel='linear', decision_function_shape='ovr'))
estim2.fit(X,y)

print(estim1.coef_ == estim2.coef_)
array([[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True]], dtype=bool)

因此,您可以看到两个模型构建的所有三个估计量的系数都相等。假设此数据集只有 150 个样本和 3 个类,因此对于更复杂的数据集,这些结果可能会有所不同,但这是一个简单的概念证明。

关于python - 使用 OneVsRestClassifier 时 sklearn.svm.SVC 的哪个 decision_function_shape?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43505451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com