线性SVM决策过程可视化

本文通过Python和matplotlib详细介绍了如何可视化线性支持向量机(SVM)的决策边界。从导入模块到创建数据集,再到理解contour函数和使用meshgrid生成网格点,逐步解析SVM的决策过程。最后,文章封装了绘制决策边界的函数,以便于处理不同数据集。
摘要由CSDN通过智能技术生成


绘制思路:

  1. 获取数据集的横纵坐标最大值及最小值(xlim,ylim)
  2. 将横纵坐标轴平均分为n份(axisx,axisy)
  3. 通过meshgrid函数进行广播,生成网格点(xy)
  4. 通过SVC.decision_function方法计算网格内每个点到决策边界的距离
  5. 通过contour函数绘制决策边界及虚线超平面

1.导入我们需要的模块

from sklearn.datasets import make_blobs
from sklearn.svm import SVC
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

2.创建数据集,查看分布情况

#创建数据集并可视化
X,y = make_blobs(n_samples = 50,centers=2,random_state=0,cluster_std=0.6)
plt.scatter(X[:,0],X[:,1],c = y,cmap = 'gist_rainbow')
plt.xticks([])
plt.yticks([])
#隐藏x,y坐标轴

在这里插入图片描述

3.理解contour函数

m a t p l o t l i b . a x e s . A x e s . c o n t o u r ( [ X , Y , ] Z , [ l e v e l s ] , ∗ ∗ k w a r g s ) matplotlib.axes.Axes.contour([X, Y,] Z, [levels], **kwargs) matplotlib.axes.

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可视化SVM决策边界,你可以使用Python中的一些数据可视化库,例如Matplotlib和Scikit-learn。下面是一个基本的示例代码,演示了如何绘制SVM决策边界: ```python import numpy as np import matplotlib.pyplot as plt from sklearn import svm # 创建一些样本数据 X = np.array([[2, 2], [1, 3], [2, 3], [3, 1], [3, 2]]) y = np.array([0, 0, 0, 1, 1]) # 创建一个SVM分类器,并训练模型 clf = svm.SVC(kernel='linear') clf.fit(X, y) # 绘制样本点 plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired) # 绘制决策边界 ax = plt.gca() xlim = ax.get_xlim() ylim = ax.get_ylim() # 创建网格以绘制决策边界 xx = np.linspace(xlim[0], xlim[1], 30) yy = np.linspace(ylim[0], ylim[1], 30) YY, XX = np.meshgrid(yy, xx) xy = np.vstack([XX.ravel(), YY.ravel()]).T Z = clf.decision_function(xy).reshape(XX.shape) # 绘制决策边界和边界间隔 ax.contour(XX, YY, Z, levels=[-1, 0, 1], alpha=0.5, linestyles=['--', '-', '--'], colors='red') # 绘制支持向量 ax.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=100, linewidth=1, facecolors='none', edgecolors='black') plt.show() ``` 这段代码首先创建了一些样本数据,然后使用SVC类创建了一个线性核的SVM分类器。接下来,我们用样本点绘制散点图,并使用决策函数绘制决策边界和边界间隔。最后,绘制支持向量。 运行这段代码,你将得到一个显示决策边界和支持向量的散点图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值