Svm 预测 Scikit Learn 中的默认值

Posted

技术标签:

【中文标题】Svm 预测 Scikit Learn 中的默认值【英文标题】:Default value in Svm prediction Scikitlearn 【发布时间】:2018-02-03 00:01:05 【问题描述】:

我正在使用scikitlearn 进行 svm 分类。

我需要一个分类器,当给定的测试项目与任何训练集项目都不匹配时,即当距离非常高时,它会返回默认值。这可能吗?

举例

假设我的训练集是

   X= [[0.5,0.5,2],[4, 4,16],[16, 16,64]]

和标签

y=[0,1,2]

然后我开始训练

clf = svm.SVC()
clf.fit(X, y)

然后我运行预测

clf.predict([-100,-100,-200])

现在我们可以看到测试项目[-100,-100,-200] 离任何训练项目都太远了,在这种情况下,预测将产生[2] 也就是这个项目[16, 16,64],无论如何要进行它返回其他任何东西(不是来自训练集)?

【问题讨论】:

过于宽泛和非正式。但您可能会要求在 sklearn 中也提供异常值检测/一类 svm。 是的,实际上我只需要判断该项目是否可以与训练集项目之一匹配,我不关心这些值,所以例如我想得到 1匹配,-1 表示不匹配。 【参考方案1】:

我认为您可以为这些大值创建一个标签,并将其添加到您的训练集中。

X= [[0.5,0.5,2],[4, 4,16],[16, 16,64],[-100,-100,200]]
Y=[0,1,2,100]

试一试。

由于 SVM 是监督学习,这意味着必须指定“输出”。如果您不确定“输出”,请进行一些非监督聚类(例如 kmeans),并大致了解您期望有多少可能的“输出”。

【讨论】:

只有当您知道可能的极值时,才能为异常添加标签,例如我可能需要将 [50,50,100] 分类为不匹配,因为它离训练集的任何项目都太远了。我将研究k-means。谢谢你的回答:)

以上是关于Svm 预测 Scikit Learn 中的默认值的主要内容,如果未能解决你的问题,请参考以下文章

使用 SVM 模型和 scikit-learn 进行预测的 AttributeError

Scikit Learn:如何在回归中设置 SVM 输出范围?

predict() 在 scikit learn 中返回与 SVM 的图像相似度

scikit-learn svm库使用小结

如何让 SVM 很好地处理 scikit-learn 中的缺失数据?

SVM 实现,scikit learn 减少运行时间,最快的 svm