用于二进制分类的 OneClassSVM

Posted

技术标签:

【中文标题】用于二进制分类的 OneClassSVM【英文标题】:OneClassSVM for binary classification 【发布时间】:2020-02-18 20:53:26 【问题描述】:

我正在使用 OneClassSVM 来解决二元分类问题。我有一个数据集,其中目标变量标记为 0 或 1。我不知道 OneClassSVM 是否可用于二分类或多分类问题,但是当我尝试预测时,我得到以下信息: y_true:

[0 0 0 1 1 0 0 1 1 0 1 1 0 0 0 1 1 1 0 1 0 0 1 1 0 0 1 1 1 0 1 0 1 1 1 0 1
 1 1 0 1 0 0 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 1 1 1 0 0 0 0 0 1
 0 1 1 1 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 1 1
 0 1 0 0 1 0 0 0 1 0 1 1 1 1 1]

y_pred:

[-1  1  1  1 -1  1  1  1  1  1  1  1  1  1 -1  1  1  1  1  1  1 -1  1  1
  1  1 -1  1  1  1  1  1  1 -1  1  1  1  1 -1  1  1  1  1  1 -1  1  1  1
  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 -1  1  1  1  1  1  1
  1  1  1  1  1  1  1  1  1  1  1  1 

y_pred中有很多 -1 值,我假设这些是模型试图预测类 0 但无法预测的实例?

主要问题: OneClassSVM 可以用于二分类吗?

【问题讨论】:

【参考方案1】:

下面的链接解释得很好:

https://stats.stackexchange.com/questions/99162/what-is-one-class-svm-and-how-does-it-work

总而言之,如果您的任务是简单地执行二进制分类,您应该使用sklearn.svm.SVC

【讨论】:

【参考方案2】:

您的输出不是 1 和 0,而是 1 和 -1。

【讨论】:

以上是关于用于二进制分类的 OneClassSVM的主要内容,如果未能解决你的问题,请参考以下文章

如何在 sklearn 中获取用于二进制分类的 roc auc

一个简单的单层感知器实现,用于具有 sigmoid 激活函数的二进制分类

具有二进制数据的朴素贝叶斯分类器

用于二进制分类的 ResNet - 只有 2 个交叉验证准确度值

用于序列二进制分类的 Keras LSTM 模型

用于敏感性和特异性的二进制分类器 Keras 回调?