SVM支持向量机,可以用来做分类。分割超平面。需要升维.
http://blog.csdn.net/lvhao92/article/details/50817110
以上这个例子可以很好的理解SVM
代码实现
# coding: utf-8
print(__doc__)
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
#创建随机点
np.random.seed(0)
X = np.r_[np.random.randn(20,2)-[2,2],np.random.randn(20,2)+[2,2]]
Y = [0] * 20 + [1] * 20
#选择内核
clf = svm.SVC(kernel='linear')
clf.fit(X,Y)
#构造超平面
w = clf.coef_[0]
a = -w[0]/w[1]
xx = np.linspace(-5,5)
yy = a*xx - (clf.intercept_[0] / w[1])
#绘制与通过的分离超平面的相似之处
#支撑向量
b = clf.support_vectors_[0]
yy_down = a * xx + (b[1]-a*b[0])
b = clf.support_vectors_[-1]
yy_up = a * xx + (b[1] - a*b[0])
#用matplotlib画图
plt.plot(xx,yy,'k-')
plt.plot(xx,yy_down,'k--')
plt.plot(xx,yy_up,'k--')
plt.scatter(clf.support_vectors_[:,0],clf.support_vectors_[:,1],s=80,facecolors='none')
plt.scatter(X[:,0],X[:,1],c=Y,cmap=plt.cm.Paired)
plt.axis('tight')
plt.show()
网友评论