Python 带线性核的sklearn svc提供奇怪的支持向量

Python 带线性核的sklearn svc提供奇怪的支持向量,python,machine-learning,scikit-learn,svm,Python,Machine Learning,Scikit Learn,Svm,代码: 结果是: from sklearn import svm def testsvm(): t_d = [[1,1], [1,-1], [-1,-1], [-1, 1], [-0.0001, 0.0001], [0,0], [-1, -1.0001]] y = [1,-1,1,1, 1, 1, -1] clf = svm.SVC(kernel='linear', C=1) clf.fit(t_d, y) print clf.support_vec

代码:

结果是:

from sklearn import svm

def testsvm():
    t_d = [[1,1], [1,-1], [-1,-1], [-1, 1], [-0.0001, 0.0001], [0,0], [-1, -1.0001]]
    y = [1,-1,1,1, 1, 1, -1]

    clf = svm.SVC(kernel='linear', C=1)
    clf.fit(t_d, y)

    print clf.support_vectors_
    print clf
但就我而言,支持向量应该是:

[[ 1.     -1.    ]  
 [-1.     -1.0001]  
 [-1.     -1.    ]  
 [ 0.      0. ]]
如果边距彼此平行,[1,-1]不应该省略吗

我的代码有什么问题吗?如果是,请注明。
非常感谢您使用了太小的
C
,您没有得到您想要的“硬边距支持向量机”,而是得到了一个“软”版本,它有更多的支持向量(不完全在“边距边界”)

设置
clf=svm.SVC(kernel='linear',C=100000000)

[[1,1]
 [0,0]
 [-1,-1]
 [-1.     -1.0001]]
您可以使用中的代码来调查分隔超平面和边距大小的确切位置

[[ 1.     -1.    ]
 [-1.     -1.0001]
 [-1.     -1.    ]]