并非所有分类预测模型都支持多类分类。
像感知器、逻辑回归和支持向量机这样的算法是为二元分类设计的,不直接支持两个以上类别的分类任务。
使用二元分类算法解决多分类问题的一种方法是将多类分类数据集拆分为多个二元分类数据集,并在每个数据集上拟合一个二元分类模型。这种方法的两个不同示例是“一对多”(One-vs-Rest)和“一对一”(One-vs-One)策略。
在本教程中,您将了解用于多类分类的“一对多”和“一对一”策略。
完成本教程后,您将了解:
- 像逻辑回归和SVM这样的二元分类模型不直接支持多类分类,需要元策略(meta-strategies)。
- “一对多”策略将一个多类分类问题拆分为每个类别一个二元分类问题。
- “一对一”策略将一个多类分类问题拆分为每对类别一个二元分类问题。
通过我的新书《使用 Python 的集成学习算法》启动您的项目,书中包含所有示例的分步教程和Python 源代码文件。
让我们开始吧。

如何使用“一对多”和“一对一”进行多类别分类
图片由 Espen Sundve 拍摄,保留部分权利。
教程概述
本教程分为三个部分;它们是:
- 用于多类分类的二元分类器
- 多类分类中的“一对多”策略
- 多类分类中的“一对一”策略
用于多类分类的二元分类器
分类是一个预测建模问题,涉及为示例分配类别标签。
二元分类是指将示例分配到两个类别之一的任务。多类分类是指将示例分配到两个以上类别之一的任务。
- 二元分类:具有两个类别的分类任务。
- 多类分类:具有两个以上类别的分类任务。
有些算法是为二元分类问题设计的。例如:
- 逻辑回归
- 感知器
- 支持向量机
因此,它们不能直接用于多类分类任务。
相反,可以使用启发式方法将多类分类问题拆分为多个二元分类数据集,并为每个数据集训练一个二元分类模型。
这些启发式方法的两个示例包括:
- 一对多(OvR)
- 一对一(OvO)
让我们仔细看看每一个。
多类分类中的“一对多”策略
一对多(简称 OvR,也称为 One-vs-All 或 OvA)是一种使用二元分类算法进行多类分类的启发式方法。
它涉及将多类数据集拆分为多个二元分类问题。然后,针对每个二元分类问题训练一个二元分类器,并使用最自信的模型进行预测。
例如,给定一个多类分类问题,其中包含“红色”、“蓝色”和“绿色”每个类别的示例。这可以分为三个二元分类数据集,如下所示:
- 二元分类问题 1:红色 vs [蓝色, 绿色]
- 二元分类问题 2:蓝色 vs [红色, 绿色]
- 二元分类问题 3:绿色 vs [红色, 蓝色]
这种方法的一个潜在缺点是它需要为每个类别创建一个模型。例如,三个类别需要三个模型。对于大型数据集(例如,数百万行)、慢速模型(例如,神经网络)或非常多的类别(例如,数百个类别),这可能是一个问题。
显而易见的方法是采用一对多方法(也称为一-对-所有),其中我们训练 C 个二元分类器 fc(x),其中类别 c 的数据被视为正例,而所有其他类别的数据被视为负例。
——第 503 页,《机器学习:概率视角》,2012 年。
这种方法要求每个模型预测一个类别成员概率或类似概率的分数。然后,使用这些分数的最大值(分数最大的类别索引)来预测类别。
这种方法通常用于自然地预测数值类别成员概率或分数的算法,例如:
- 逻辑回归
- 感知器
因此,scikit-learn 库中这些算法的实现默认在将它们用于多类分类时采用 OvR 策略。
我们可以通过一个使用 LogisticRegression 算法的 3 类分类问题示例来演示这一点。处理多类分类的策略可以通过“multi_class”参数设置,并可以设置为“ovr”以使用一对多策略。
使用内置一对多策略拟合多类分类逻辑回归模型的完整示例如下所示。
1 2 3 4 5 6 7 8 9 10 11 |
# 使用内置一对多进行多类分类的逻辑回归 from sklearn.datasets import make_classification 从 sklearn.线性模型 导入 LogisticRegression # 定义数据集 X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_redundant=5, n_classes=3, random_state=1) # 定义模型 model = LogisticRegression(multi_class='ovr') # 拟合模型 model.fit(X, y) # 进行预测 yhat = model.predict(X) |
scikit-learn 库还提供了一个单独的 OneVsRestClassifier 类,它允许将一对多策略与任何分类器一起使用。
此类别可用于将二元分类器(如逻辑回归或感知器)用于多类分类,甚至可用于其他原生支持多类分类的分类器。
它使用起来非常简单,需要将用于二元分类的分类器作为参数提供给 OneVsRestClassifier。
以下示例演示了如何将 OneVsRestClassifier 类与用作二元分类模型的 LogisticRegression 类一起使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 使用一对多进行多类分类的逻辑回归 from sklearn.datasets import make_classification from sklearn.linear_model import LogisticRegression from sklearn.multiclass import OneVsRestClassifier # 定义数据集 X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_redundant=5, n_classes=3, random_state=1) # 定义模型 model = LogisticRegression() # 定义 ovr 策略 ovr = OneVsRestClassifier(model) # 拟合模型 ovr.fit(X, y) # 进行预测 yhat = ovr.predict(X) |
想开始学习集成学习吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
多类分类中的“一对一”策略
一对一(简称 OvO)是另一种使用二元分类算法进行多类分类的启发式方法。
与一对多类似,一对一将多类分类数据集拆分为二元分类问题。与一对多为每个类别拆分一个二元数据集不同,一对一方法为每个类别与所有其他类别对拆分一个数据集。
例如,考虑一个具有四个类别:“红色”、“蓝色”、“绿色”和“黄色”的多类分类问题。这可以分为六个二元分类数据集,如下所示:
- 二元分类问题 1:红色 vs 蓝色
- 二元分类问题 2:红色 vs 绿色
- 二元分类问题 3:红色 vs 黄色
- 二元分类问题 4:蓝色 vs 绿色
- 二元分类问题 5:蓝色 vs 黄色
- 二元分类问题 6:绿色 vs 黄色
这比上一节中描述的一对多策略明显需要更多的数据集和模型。
计算二元数据集(以及模型)数量的公式如下:
- (类别数 * (类别数 – 1)) / 2
我们可以看到,对于四个类别,这给我们六个二元分类问题的预期值:
- (类别数 * (类别数 – 1)) / 2
- (4 * (4 – 1)) / 2
- (4 * 3) / 2
- 12 / 2
- 6
每个二元分类模型可能预测一个类别标签,并且由一对一策略预测拥有最多预测或投票的模型。
另一种方法是引入 K(K - 1)/2 个二元判别函数,每对可能的类别一个。这被称为一对一分类器。然后根据判别函数之间的多数投票对每个点进行分类。
——第 183 页,《模式识别与机器学习》,2006 年。
同样,如果二元分类模型预测数值类别成员资格(例如概率),则将分数总和的最大值(总和分数最大的类别)预测为类别标签。
通常,这种方法被建议用于支持向量机(SVM)和相关的基于核的算法。这被认为是因为核方法的性能与训练数据集的大小不成比例,使用训练数据的子集可以抵消这种影响。
scikit-learn 中的支持向量机实现由 SVC 类提供,并支持一对一方法用于多类分类问题。这可以通过将“decision_function_shape”参数设置为“ovo”来实现。
下面的例子演示了使用一对一方法进行多类分类的 SVM。
1 2 3 4 5 6 7 8 9 10 11 |
# 使用内置一对一进行多类分类的 SVM from sklearn.datasets import make_classification from sklearn.svm import SVC # 定义数据集 X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_redundant=5, n_classes=3, random_state=1) # 定义模型 model = SVC(decision_function_shape='ovo') # 拟合模型 model.fit(X, y) # 进行预测 yhat = model.predict(X) |
scikit-learn 库还提供了一个单独的 OneVsOneClassifier 类,它允许将一对一策略与任何分类器一起使用。
此类别可与二元分类器(如 SVM、逻辑回归或感知器)用于多类分类,甚至可用于其他原生支持多类分类的分类器。
它使用起来非常简单,需要将用于二元分类的分类器作为参数提供给 OneVsOneClassifier。
以下示例演示了如何将 OneVsOneClassifier 类与用作二元分类模型的 SVC 类一起使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 使用一对一进行多类分类的 SVM from sklearn.datasets import make_classification from sklearn.svm import SVC from sklearn.multiclass import OneVsOneClassifier # 定义数据集 X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_redundant=5, n_classes=3, random_state=1) # 定义模型 model = SVC() # 定义 ovo 策略 ovo = OneVsOneClassifier(model) # 拟合模型 ovo.fit(X, y) # 进行预测 yhat = ovo.predict(X) |
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
书籍
API
- 多类和多标签算法,scikit-learn API.
- sklearn.multiclass.OneVsRestClassifier API.
- sklearn.multiclass.OneVsOneClassifier API.
文章
总结
在本教程中,您学习了用于多类分类的“一对多”和“一对一”策略。
具体来说,你学到了:
- 像逻辑回归和SVM这样的二元分类模型不直接支持多类分类,需要元策略(meta-strategies)。
- “一对多”策略将一个多类分类问题拆分为每个类别一个二元分类问题。
- “一对一”策略将一个多类分类问题拆分为每对类别一个二元分类问题。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
是否可以访问为每个情况创建的每个单独分类器?在某些情况下,需要单独理解和查看结果。
是的,我相信它们是拟合模型的一个属性。
信息量很大
谢谢!
非常棒的文章。我的问题是,当我们必须使用特定输入数据集构建预测模型时,如何决定使用哪种方法。我们是否应该尝试两种方法,并保留在 kappa、F1 等分类表方面表现最好的那一种?如果我们的训练数据集不平衡,文献是否提出了特定的选择?
谢谢!
一般来说,我建议测试这两种方法和其他方法,并使用在您的特定数据集上表现最好的技术。
关于不平衡分类的指标,请参阅此教程,了解如何选择:
https://machinelearning.org.cn/tour-of-evaluation-metrics-for-imbalanced-classification/
我相信多项逻辑回归可以解决多标签分类问题。
如果我们采用一对多或一对一;它不会在模型构建中花费更多时间吗?
两点都同意。
非常感谢
请问您推荐哪种机器学习方法用于光伏太阳能故障分类?
这是我在这里回答的一个常见问题
https://machinelearning.org.cn/faq/single-faq/what-algorithm-config-should-i-use
一如既往的精彩文章。
1. 您如何在模型中设置参数和使用独立的 ovr/ovo 类之间进行选择?
2. 您是否有使用这些方法的示例输出链接?您会建议使用真实世界的数据集来展示其价值吗?
谢谢!
谢谢!
您说的模型与独立类是什么意思?是指逻辑回归吗?在这种情况下,最好使用内置案例以避免引入错误。
我确信我有关于多类分类上的 LR 的示例。这与价值无关,而是关于能够在以前无法使用算法的问题上使用算法。如果这些算法与在同一问题上尝试的其他方法一样熟练或更熟练,那么这很有价值。
非常棒的文章。
您是否有使用 R 的类似文章?
谢谢。
抱歉,我没有。
谢谢你的解释。我有一个问题
对于 xgboost,它内部是用于二元分类的。因此,在 xgboost 中,如果我们选择使用“multi:softprob”作为目标函数,它将为每个类创建 n 个森林,对吗?所以我们不需要使用“binary:logistic”构建 xgboost 分类器并将其封装在 OneVsRestClassifier 中,对吗?
不完全是,xgboost 中的每棵树都直接进行多类预测。
谢谢你的回答。只想和你确认我的理解。xbgoost 的作者在
https://github.com/dmlc/xgboost/issues/3655
所以,每个类都有一个二元森林;然而,它们是基于多类交叉熵损失训练的。所以看来 xgboost 确实构建了二元分类器,但没有在二元损失上训练它们。
那么我的问题是关于 sklearn 中的逻辑回归,如果我们选择 multi_class 参数为 ovr,那么它应该使用什么损失函数呢?如果它也使用多类交叉熵损失函数,那么这里的意义是什么。我们可以为 N 个二元分类器训练 N 个 1xM 向量,我们也可以训练一个 N×M 矩阵直接得到 softmax 结果。
太棒了。谢谢。
您可以训练一个多项式逻辑回归,即真正的多类。或者您可以使用二元交叉熵并拟合多个 OvR 模型,我相信 sklearn 就是这样做的。
非常棒的文章。
1) 是否可以与多层感知器一起使用?
谢谢。
也许吧。我没有示例,抱歉。
你好 Jason,谢谢你的文章。
我叫 Isak,来自印度尼西亚。所以,抱歉我的英语不好。我想问一下这行代码:
# 定义模型
model = SVC()
# 定义 ovo 策略
ovo = OneVsOneClassifier(model)
我阅读了 sklearn 文档,其中解释了两件事:
=== 对于 SVC() ===
多类支持是根据一对一方案处理的。
=== 对于 LinearSVC() ===
此类别支持密集和稀疏输入,多类支持根据一对多方案处理。
我的问题
1. SVC 已经支持使用 OVO 方法进行多类分类。为什么对 SVC () 使用“OneVsOneClassifier”模块?
2. 我目前正在使用 SVM 方法和 OnevsAll 方法进行多类分类的最终项目。是否有可能在 SVC() 上将“OnevsOneClassifier”更改为“OnevsRestClassifier”?或者我应该在 LinearSVC() 上使用“OnevsRestClassifier”模块?
谢谢你……
是的。我在这里明确地演示了这一点。您可以根据自己的喜好调整它以使用任何方法。
是的,试试看!
好文章!我的两分钱
“decision_function_shape{‘ovo’, ‘ovr’}, default=’ovr’
是返回形状为 (n_samples, n_classes) 的一对多 (‘ovr’) 决策函数(与所有其他分类器一样),还是 libsvm 的原始一对一 (‘ovo’) 决策函数,其形状为 (n_samples, n_classes * (n_classes – 1) / 2)。但是,一对一 (‘ovo’) 始终用作多类策略。该参数对于二元分类被忽略。”
摘自 https://scikit-learn.cn/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC
因此,对于 SVM,ovo 始终用于多类分类,并且此参数仅决定决策函数的外观,您同意吗?
谢谢您的留言。
感谢这篇精彩的文章,非常详细地解释了不同的 OvO 和 OvR 方法
谢谢!
我推测这个一对多会在你的情况下创建 3 个模型。第一个是红色为 1,其他为 0;然后蓝色为 1,其他为 0,依此类推。然后通过在一条线上运行所有三个模型并取最高概率进行预测。如果你有一个涉及“比赛”的问题怎么办?这里,一个是跑步者,其余是比赛中的其他跑步者。可以通过填充来使所有比赛具有相等的跑步者,但我的问题是,是否有简洁的库例程或参数来处理这个问题?如果数据有 raceId 和 runnerId 字段,它是否可以进行一对多?
是的,填充,但听起来不适合那种类型的问题。
任何将行追踪到主题(例如 ID)的操作都必须在应用程序(模型周围的代码)中发生,而不是在预测模型中。
这可能有帮助
https://machinelearning.org.cn/how-to-connect-model-input-data-with-predictions-for-machine-learning/
我们可以将二元分类用于多类分类吗?
是的,上述技术展示了如何实现。
这引起了我的注意
“这种方法要求每个模型预测一个类别成员概率或类似概率的分数。然后,使用这些分数的最大值(分数最大的类别索引)来预测类别。”
我自己实现了一些玩具 AI 工具,我所做的不是比较每个模型(OvR)的分数,而是比较每个模型(OvR)表示“是的,那是那个类别”的分数。所以如果
模型“RED”的训练分数是 0.6 并表示 YES
模型“BLUE”的训练分数是 0.7 并表示 NO
模型“GREEN”的训练分数是 0.65 并表示 YES
那么我分配 GREEN 标签。
所以它不是直接的“类别成员概率”,而更像是“模型正确概率”。
你觉得这种方法怎么样?
不错。如果它比其他方法工作得好/更好,那就使用它。
嘿,Jason。有趣的概念。你描述的每种方法都会为每个类别变量计算一个概率分数吗?换句话说,测试数据集中的每个类别变量都会根据训练数据获得一个概率值。我的意思是,像随机森林那样,只有最高值被分配给三个类别变量中的一个,而其他值为 0,而你的描述似乎表明不仅识别出概率最高的类别,而且也识别出概率较低的类别。
有些模型会自然地预测一个概率,例如逻辑回归。
这与上面描述的将二元分类模型用于多类分类问题无关。这些主题是正交的。
我想我不太理解 OvO,如果我有三个类别 A、B、C,那么我就有成对的
A 对 B,A 对 C,B 对 C,
假设我们想对类别 C 使用模型,那么我们需要在 A 对 C、B 对 C 之间进行选择,对吗?但它们都将类别 C 标记为负样本,那么我们是选择负样本数量较多的那个,而不是正样本数量较多的那个(不确定这个投票是否只是正样本数量较多)?
您使用所有 3 个模型进行预测,然后支持最多的标签获胜/被预测。
嘿,Jason,很棒的文章,你能描述一下 OvO 在测试数据集上是如何工作的吗?投票是如何进行的?
拥有最多“投票”的标签被预测,如下所述
https://scikit-learn.cn/stable/modules/generated/sklearn.multiclass.OneVsOneClassifier.html#sklearn.multiclass.OneVsOneClassifier.predict
嗨,Jason,
我们为什么还要使用 One vs Rest,为什么不直接在 k 个类上训练我们的模型,以及如果我们使用 k 个类而不是从每个类创建一个二元类会带来什么麻烦?
以及 One Vs Rest 如何解决问题?
请帮助。
谢谢你
Jimmy
它可能对特定的二元分类模型和数据集非常有效或最佳。
它解决问题的方式在上述教程中有所描述。
嗨,Jason,非常有趣的文章。
我想问你一个问题。
在一个多类分类问题(3 个类)中,我如何确定多类分类器(如朴素贝叶斯或 MLN)和 SVM 分类器(一对一)哪一个效果更好,SVM 分类器是二元的?
通常,您会选择一个指标,并评估一套模型和模型配置,直到找到一个表现最佳的模型。
嗨,Jason 博士,非常感谢您有趣的专题。
如果我需要比较一对一方法中三个分类器的性能。我选择使用敏感度和准确度作为指标。对于每对类别,我将生成我的指标(敏感度和准确度)。如何估计分类器的整体指标。
例如,我有一个三类问题,假设我有平衡类数据,对于每个分类器,我将有 3 个敏感度值和 3 个准确度值,每对类别一个。如何估计分类器的整体准确度和整体敏感度。
我可以直接平均它们,还是有其他方法?
谢谢
也许您可以使用重复的 k 折交叉验证来评估每种方法并比较平均分数。
嗨,jason,非常有趣的文章。我需要你的帮助。我有一个包含 11 个类别的数据集,我正在使用 SVM 分类器进行多类分类,但我的准确度不高。但是当我进行二元分类时,它给了我很好的准确度。多类分类器出了点问题。请帮助我。
谢谢。
也许 SVM 对您的数据不好用。
也许尝试不同的模型?
也许尝试不同的数据预处理?
嗨,Brownlee 博士,我想知道“.predict_proba”如何与 ovr 一起工作?因为 ovr 使用多个独立的二元分类器……我实际上尝试了上面的示例,得到了 3 个概率,总和为 1,就像多类模型一样。
暂时不确定,但这是 API
https://scikit-learn.cn/stable/modules/generated/sklearn.multiclass.OneVsRestClassifier.html#sklearn.multiclass.OneVsRestClassifier.predict_proba
代码如下:
https://github.com/scikit-learn/scikit-learn/blob/95119c13a/sklearn/multiclass.py#L386
我猜这些概率被标准化以使总和为 1。
非常感谢您的快速回复和有用的链接。
是的,通常使用 softmax 来实现这种效果
https://machinelearning.org.cn/softmax-activation-function-with-python/
RandomForestClassifier 的工作方式也一样吗?我的意思是,Sklearn 也会为多类分类创建多个 RandomForestClassifier 吗?
不,我相信随机森林直接支持多类分类。
你好,
既然我们在 One vs All 中可能会遇到不平衡分类的挑战,我们应该如何处理呢?
谢谢你。
此致,
玛丽
也许尝试重新平衡训练数据集。
嗨 Jason Brownlee,很棒的工作,
堆叠集成支持多标签分类吗?或者让我重新措辞我的问题,我可以使用多标签分类器(例如 MLKNN、BRKNN 或转换分类器:Labelpowerst、binaryrelevance)在级别 0 和 1 进行
我暂时不确定,也许可以试试看。
假设我们有 3 个类别:红色、绿色和蓝色。
所以,在“一对一”(OVO)中,我们创建 3 对分类器
– 红色 vs 蓝色
– 红色 vs 绿色
– 蓝色 vs 绿色
如果每个分类器的结果是这样的呢?
– 红色 vs 蓝色,结果是红色
– 红色 vs 绿色,结果是绿色
– 蓝色 vs 绿色,结果是蓝色
哪个类别应该获胜?
或者也许我误解了 OVO 概念的工作原理?
不,你没有误解。那是正确的,在这种情况下我们没有明确的答案。我宁愿说,“不确定”。
你好,谢谢你的帖子。我有一个问题,也许你可以帮忙。你是否知道 sklearn 中 DecisionTreeClassifier 的默认多类策略是什么?
如果没有给出 OVO 或 OVR 的指示。
非常感谢!
两者都不是,因为决策树不是基于二元分类的模型。
你好,有人知道如何做这个项目吗?这对我意义重大!
多重分类(一对一)
一对一分类用于数据可以属于两个以上类别的情况。
每个学生的任务是:
1. 研究给定算法的工作原理。
2. 创建一个使用多重分类解决逻辑回归问题的实现(允许使用带有现成分类实现的库)。
3. 提供用于训练和测试模型的输入文件,其中至少包含 100 个输入,分为两个以上类别(最少 3 个)。
4. 使用练习中学到的技术分析模型质量,分析整个系统的敏感度和精度。
一对一算法检验数据属于 CI 类别的假设,即不属于 Cj 类别。当与所有其他类别进行测试时,数据类别是获得最大数量正分类的类别。两个类别的假设检验应通过逻辑回归完成。
你好 Korisnik…从你的帖子来看,我不确定你是在问学校项目还是作业。
一般来说,我建议你独立完成家庭作业和作业。
你选择了课程,甚至(也许)支付了学费。你选择通过自学投资自己。
为了最大程度地利用这项投资,你必须努力学习。
此外,你(可能)已经付钱给老师、讲师和支持人员来教你。利用这些资源,向他们寻求关于你的作业或任务的帮助和澄清。从某种意义上说,他们为你工作,没有人比他们更了解你的作业或任务以及如何评估。
尽管如此,如果你仍然感到困惑,也许你可以把你的困难归结为一句话,然后联系我。
这个例子中的特征是什么?
嗨,学生……特征是您用来进行预测的项目……例如分类中考虑的类别。
Jason,你能解释一下 LogisticRegression(multi)class='multinomial') 是如何工作的吗?显然它不是 OVR,因为那是一个单独的选项。我假设它是 K-1 个类中的每个类与一个参考类进行比较,但如果是这样,它如何为所有类生成 beta 值?
嗨,詹姆斯……以下资源可能对您有用
https://machinelearning.org.cn/multinomial-logistic-regression-with-python/
您的博客比付费博客好——每次都切中要害——谢谢您救了我的命!
感谢 RK 的反馈和支持!我们非常感激!
谢谢你,Jason。
我正在使用 sklearn 中 OneVsOneClassifier 和 SVM 的实现。在 sklearn 的 OneVsOneClassifier 文档中,该类确实提供了 fit()、predict() 等方法。
然而,该分类器不提供 predict_proba(),这是计算多类分类的 roc_auc_score 所必需的。
我如何获得类别的预测概率(即 predict_proba 返回的值)以用于计算 roc_auc_score?
嗨 abu_nuwayrah……以下资源希望能对您有所帮助
https://scikit-learn.cn/stable/modules/generated/sklearn.multiclass.OneVsOneClassifier.html
你好,谢谢你的帮助文章。
我需要一个关于如何使用感知器进行多类分类的数值示例。
嗨 Israa……不客气!以下资源可能对您有所帮助
https://machinelearning.org.cn/perceptron-algorithm-for-classification-in-python/
嗨 Jason,我使用这种方法来获取我的集成模型的 AUCROC,我将其用于 bagging、Voting、stacking 和 booting。除了 Voting,它对所有模型都有效。这是下面的代码
visualizer= ROCAUC(voting_model)
visualizer.fit (X_train, y_train)
visualizer.score(X_test, y_test)
visualizer. Show()
请我需要您的帮助。
你好 Sunday……你遇到了什么错误?