sklearn之svm(持续更新)

一、线性svm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#用来画决策边界和支持向量的函数
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核函数