一、線性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核函數