python - 如果投票中有 "tie",带有 ovo 模型的多类 SVC 如何进行预测?

标签 python scikit-learn

假设我有一组具有 4 个标签的多类数据:[A, B, C, D],我想使用 ovo SVC 分类器进行预测。我知道一旦我训练,我将训练 6 个 ovo 模型并可以使用 svc.decision_function() 查看决策函数输出集。这些函数的组织方式如下:

[AB, AC, AD, BC, BD, CD]

第一个字母是正数,第二个字母是负数。据我了解,预测采用这些决策函数分数并产生一组“投票”,其模式就是最终的预测。像这样的东西:

[AB, AC, AD, BC, BD, CD] #Model Organization
[1.4, 0.2, 0.6, 3, -2.2, -0.4] #Decision function output
[A, A, A, B, D, D] #Prediction for each model

模式为 A,因此 svc.predict() 函数应输出 A。我的问题是,如果决策函数输出看起来像这样(我只是翻转了第二个条目的符号,但假装它是一个新输出)会怎样:

[AB, AC, AD, BC, BD, CD] #Model Organization
[1.4, -0.2, 0.5, 3, -2.2, -0.4] #Decision function output
[A, C, A, B, D, D] #Prediction for each model

现在 AD 都是众数,那么 SVC 如何打破平局并进行预测呢?据推测,我将对每个标签的决策函数输出值(关于标签的方向)求和,因为距决策面的距离向我表明模型在每种情况下预测标签的决定性。这将使示例中的 D 生效。但我也可以看到使用“AD”模型的具体分数。不管怎样,不知道 SVC 是如何做到的。

最佳答案

它打破了最低值(value)类别的束缚。很难追踪到这一点,因为它似乎发生在 libsvm 级别,而不是 sklearn 级别。幸运的是,an example源自 earlier issue提供一个数据集,我们可以在其中看到操作。这是原件(将 decision_function_shape 更改为 ovo 后,该图看起来相同):

three-class SVM example

中间的三角形区域与左下区域一起分类,即第 0 类。ovo 模型的决策与该区域中每个类别的一票 Hook 。

交换类 0 和 2 的名称(例如通过使用 y=2-y)会产生:

new SVM results

三角形区域现在与左上角区域一起分类,新命名为零。

关于python - 如果投票中有 "tie",带有 ovo 模型的多类 SVC 如何进行预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73639159/

相关文章:

python - 在 Mac OS X 上安装 MySQL Python

python ctypes 返回零作为数组中的第一个元素?

python - 在 scikit-learn 中使用 LassoCV.score() 时获得负分

Python Sklearn 逻辑回归模型拟合不正确

python-3.x - 带有自定义转换器的并行 GridSearchCV 卡在 IPython 笔记本中

python - 在 scikit-learn 中获得二元概率分类器的最大准确度

python - sklearnpartial_fit() 没有像 fit() 显示准确的结果

python - matplotlib 轴标 checkout 现奇怪错误

Python/PYQT5-隐藏菜单时崩溃,如果从主窗口运行

python - 如何修复 "Sliced assignment is only supported for variables for tensors"