当前位置:   article > 正文

(系列笔记)14.SVM和SVR_非线性svm svm.svr

非线性svm svm.svr

直观认识SVM和SVR

1、SVM实例

整理一下,前面讲了线性可分 SVM、线性 SVM、非线性 SVM 和核函数,这次笔记就通过一些例子来直观理解一下,特征采用的是一维特征。

线性可分SVM
    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.svm import SVC # "Support vector classifier"

    # 定义函数plot_svc_decision_function用于绘制分割超平面和其两侧的辅助超平面
    def plot_svc_decision_function(model, ax=None, plot_support=True):
        """Plot the decision function for a 2D SVC"""
        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(ylim[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,  edgecolors='blue', facecolors='none');
        ax.set_xlim(xlim)
        ax.set_ylim(ylim)


    # 用make_blobs生成样本数据
    from sklearn.datasets.samples_generator import make_blobs
    X, y = make_blobs(n_samples=50, centers=2,           
                      random_state=0, cluster_std=0.60)

    # 将样本数据绘制在直角坐标中
    plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cm
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/314862
推荐阅读
相关标签
  

闽ICP备14008679号