SVM算法原理
SVM算法是专门用来处理线性不可分的分类问题的,当然它也可以用来处理回归问题。它用来处理这类问题的方式一般是将数据投射到更高维的空间中,其中用得最普遍的两种升维方法分别是多项式内核(Polynomial kernel)和径向基内核(RBF)。
SVM的核函数区别
下面用一个酒的分类来说明几个核函数之间的区别:
from sklearn.datasets import load_wine
from sklearn import svm
import matplotlib.pyplot as plt
import numpy as np
#画图函数
def make_meshgrid(x,y,h=.02):
x_min,x_max = x.min()-1,x.max()+1
y_min,y_max = y.min()-1,y.max()+1
xx,yy = np.meshgrid(np.arange(x_min,x_max,h),np.arange(y_min,y_max,h))
return xx,yy
#绘制等高线
def plot_contours(ax,clf,xx,yy,**params):
Z = clf.predict(np.c_[xx.ravel(),yy.ravel()])
Z = Z.reshape(xx.shape)
out = ax.contourf(xx,yy,Z,**params)
return out
#使用酒数据集
wine = load_wine()
#选取数据集的前两个特征
X = wine.data[:,:2]
y = wine.target
C = 1.0 #正则化参数
models = (svm.SVC(kernel='linear',C=C),
svm.LinearSVC(C=