SVC scikit 预测奇数和偶数



我尝试用SVC预测奇数和偶数,但我的输出不是我期望的

from sklearn import svm
import numpy as np
clf = svm.SVC(kernel='linear')
data = np.array([[0], [1], [2], [3], [4]])
label = np.array([1,0,1,0,1])
clf.fit(data, label)
print(clf.predict([[3]]))
print(clf.predict([[4]]))
print(clf.predict([[5]]))

结果在

[1]
[1]
[1]

我做错了什么?我希望 [3] 和 [5] 是 [0]

我正在使用:

numpy==1.9.1
scikit-learn==0.16.1
scipy==0.13.3

[更新]SVM 不适用于这种情况。该算法找不到将标签为 0 的值与标签为 1 的值分开的线/平面/超平面。


您的数据不是线性可分的。尝试使用像 rbf 这样的内核svm.SVC(kernel='rfb')也许它可以帮助你

使用

clf = svm.SVC(kernel='rbf', C=100)

会给出预期的

clf.predict(np.arange(10).reshape(-1, 1))
> array([1, 0, 1, 0, 1, 1, 1, 1, 1, 1])

对于此任务,您不能使用此内核在训练数据范围之外进行泛化。我认为,你需要一个正弦内核(不是在 sklearn 中)来学习这个。或者你可以只使用你的特征的窦值。

相关内容

  • 没有找到相关文章

最新更新