支持向量机SVM可视化(不调用sklearn库)

网上关于SVM可视化内容基本上都是直接调用sklearn库来实现,没有自己实现的,本人十分鄙视这种在学习阶段只会调库而没有自己的想法的人。故研究了一下实现了SVM的可视化(不调用sklearn库),如下所示

支持向量机(SVM) -可视化(不调用sklearn库)

思路+伪代码:

1、构建采样点网络

# 要画决策边界,必须要有网格
axis = np.linspace(min(X[:,0]),max(X[:,0]),30)
ayis = np.linspace(min(X[:, 1]),max(X[:, 1]),30)
# 将特征向量转换为特征矩阵的函数
# 核心是将两个特征向量广播,以便获取x.shape*y.shape这么多点的横坐标和纵坐标
# 获取x.shape*y.shape这么多个坐标点
X,Y = np.meshgrid(axis,ayis)
# xy就是形成的网络,遍及在画布上密集的点
XY = np.vstack([X.ravel(),Y.ravel()]).T# ravel()降维函数,把每一行都放在第一行,vstack能够将多个结构一致的一维数组按行堆叠起来

2、计算采样点到决策分界面的距离集合

采样点集合:XY

决策分界面:

点到平面距离(含负数):

 得到采样点到决策分界面的距离集合D

3、使用contourf函数绘制等高线

# 输入每个新样本到决策样本边界的距离                
d = distance(XY)# D:各个点到决策边界距离
D = d.reshape(X.shape)
# 画决策边界到平行决策边界的超平面
plt.contourf(X, Y, D, levels=[-1, 0, 1], alpha=0.5)
plt.show()

支持向量机(SVM) -可视化(不调用sklearn库)效果图

 核函数:liner(C=+∞) 

  核函数:poly (C=+∞) 

核函数:rbf (C=+∞)

核函数:liner(C=0.2)   

核函数:poly (C=0.00001)  

 核函数:rbf (C=1)

  • 9
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值