我尝试用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
答案 0 :(得分:1)
<强> [更新] 强> SVM对于这种问题无效。该算法找不到一个行/平面/超平面,它将带有标签0的值与带有标签1的值分开。
您的数据不是线性可分的。
尝试用户像rbf v.ndim > 1
这样的内核也许它可以帮助你
答案 1 :(得分:0)
使用
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中)才能学到这一点。或者你可以使用你的功能的窦。