- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在做多标签分类,我试图预测问题的正确标签:
(X = 问题,y = X 中每个问题的标签列表)。
我想知道 sklearn.svm.SVC
的 decision_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/
我正在尝试重现示例 here但使用 RandomForestClassifer。 我看不到如何转换这部分代码 # Learn to predict each class against the oth
我正在尝试在我的数据集上使用 OneCsRestClassifier。我提取了将要训练的模型的特征,并在其上安装了线性 SVC。模型拟合后,当我尝试预测模型拟合的相同数据时,我得到的全是零。是因为一些
我有一个已经过训练的 OneVsRestClassifier (scikit-learn)。 clf = OneVsRestClassifier(LogisticRegression(C=1.2, p
我有一个多标签问题。我将 OneVsRestClassifier 与 SVM 一起使用。现在我想通过 GridSearchCV 调整参数。我试过了 GridSearchCV(estimator=One
我正在对多标签数据进行网格搜索,如下所示: #imports from sklearn.svm import SVC as classifier from sklearn.pipeline impor
我想在 SVC 模型中执行 GridSearchCV,但它使用一对多策略。对于后一部分,我可以这样做: model_to_set = OneVsRestClassifier(SVC(kernel="p
我正在使用 OneVsRestClassifier 进行多标签分类。它适用于 LinearSVC,但是当我将它应用于 SVC 时,出现以下错误: classifier = OneVsRestClass
我正在尝试使用 OneVsRestClassifier 对一组评论进行多标签分类。我的目标是将每条评论标记为可能的主题列表。我的自定义分类器使用手动整理的单词列表及其在 csv 中的相应标签来标记每个
我正在使用 OneVsRestClassifier 解决多标签分类问题。我将 RandomForestClassifier 传递给它。 from sklearn.multiclass import O
我正在尝试将 OneVsRestClassifier 与 SVC 一起用于图像的多分类问题 - 我从 CellProfiler 获得了图像的数值特征。我想使用 GridSearchCV 查找要使用的超
我尝试在数据集上使用 y_scores=OneVsRestClassifier(svm.SVC()).predict()就像 iris 和 titanic 一样。问题是我得到的 y_scores 是连
我正在研究多标签分类问题 import pandas as pd import pickle from sklearn.feature_extraction.text import TfidfVect
我需要一个 SVM 作为多标签分类器,所以我决定使用 OneVsRestClassifier 包装器。然而,问题出现了,训练集变得高度不平衡:对于给定的类,负例比正例多得多。这可以通过 class_w
我有二元分类方法名称FMclassifier我需要将其应用于多类分类问题,到目前为止我知道可以使用一些估计器将二元分类器或回归器变成多类分类器。我想知道在 sklearn 中使用 OneVsRestC
免责声明:我对 AI、Python、NLTK 和 scikit-learn 还很陌生。 我正在尝试训练分类器将一组文档分类为一组标签。 我正在使用 NLTK 包装器与 scikit-learn 的 O
我正在使用 OneVsRestClassifier 和 SVC 处理多标签分类, from sklearn.datasets import make_multilabel_classification
我正在阅读 Scikit-learn 的 OneVsRestClassifier() 文档,link .在我看来,OneVsRestClassifier 首先将多个类二值化为二进制类,然后训练模型,并
我正在尝试设置一个 神经轴管道 使用 sklearns OneVsRestClassifier (OVR)。 Neuraxle 管道中的每个有效步骤都必须实现 fit()和 transform()方法
据我所知,多标签问题可以用一对多的方案来解决,Scikit-learn 实现了 OneVsRestClassifier作为分类器的包装器,例如 svm.SVC .我想知道如果我真的训练会有什么不同,比
我正在做多标签分类,我试图预测问题的正确标签: (X = 问题,y = X 中每个问题的标签列表)。 我想知道 sklearn.svm.SVC 的 decision_function_shape应与
我是一名优秀的程序员,十分优秀!