SVC scikit预测奇数和偶数

时间:2015-04-24 18:00:57

标签: python scikit-learn

我尝试用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

2 个答案:

答案 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中)才能学到这一点。或者你可以使用你的功能的窦。