在机器学习中,支持向量机(SVM)常被用于数据分类和回归分析,是由分离超平面的判别算法模型。换句话说,给定标记的训练数据,该算法输出一个对新示例进行分类的最佳超平面。
支持向量机(SVM)算法模型是将示例表示为空间中的点,经过映射后,不同类别的示例被尽可能划分。除了执行线性分类外,支持向量机(SVM)还可以有效地执行非线性分类,将其输入隐式映射到高维特征空间。
支持向量机做什么?
给定一组训练示例,并根据2个类别给每个训练示例都各自标记上类别,再通过支持向量机(SVM)训练算法构建一个模型,将新示例分配给这2个类别,使其成为非概率二元线性分类器。
Python实现支持向量机(SVM)分类
先决条件:Numpy、Pandas、matplot-lib、scikit-learn
首先,创建数据集
from sklearn.datasets.samples_generator import make_blobs
X,Y=make_blobs(n_samples=500,centers=2,
random_state=0,cluster_std=0.40)
import matplotlib.pyplot as plt
plt.scatter(X[:,0],X[:,1],c=Y,s=50,cmap='spring');
plt.show()
分类
xfit=np.linspace(-1,3.5)
plt.scatter(X[:,0],X[:,1],c=Y,s=50,cmap='spring')
for m,b,d in[(1,0.65,0.33),(0.5,1.6,0.55),(-0.2,2.9,0.2)]:
yfit=m*xfit+b
plt.plot(xfit,yfit,'-k')
plt.fill_between(xfit,yfit-d,yfit+d,edgecolor='none',
color='#AAAAAA',alpha=0.4)
plt.xlim(-1,3.5);
plt.show()