一、线性svm
#用来画决策边界和支持向量的函数
def plot_svc_decision_function(model,ax=None,plot_support = True):
"绘制二维的决定方程"
if ax is None:
ax = plt.gca() # 绘制一个子图对象
xlim = ax.get_xlim()
ylim = ax.get_ylim()
x = np.linspace(xlim[0],xlim[1],30)
y = np.linspace(xlim[0],ylim[1],30)
Y, X = np.meshgrid(y,x)
xy = np.vstack([X.ravel(),Y.ravel()]).T
P = model.decision_function(xy).reshape(X.shape)
# 绘制决策边界
ax.contour(X,Y,P,colors='k',levels=[-1,0,1],alpha=0.5,linestyles=['--','-','--'])
# 绘制支持向量
if plot_support:
ax.scatter(model.support_vectors_[:,0],model.support_vectors_[:,1],s = 300,linewidth=1,facecolors='none')
ax.set_xlim(xlim)
ax.set_ylim(ylim)
#调用后要加一行代码:
plt.show()
二、非线性SVM ,常用的rbf核函数