实验二:用python实现SVM支持向量机并对鸢尾花数据集分类

实验二:SVM支持向量机

1. 实验内容:

(1)用你熟知的语言(尽量使用python)实现支持向量机的算法,并在给定的数据集上训练。

(2)在测试集上用训练好的支持向量机进行测试,并将预测结果以csv格式保存为一行预测的分类。

(3)简要说明算法原理,记录实验过程的关键步骤,以及实验过程中遇到的问题和解决方法。

2. 实验说明:

数据集为鸢尾花数据集,有三个类别,其中setosa与另外两种之间是线性可分的,因此你需要选择按照setosa和versicolor,或setsosa和virginica,进行训练分类。如果你用的是软间隔可以用两个SVM对全部三类进行测试。

实验过程中可以不可以直接调用第三方库封装好的训练函数,但可以使用基础类和函数,例如numpy的数组以及矩阵内积dot函数等(算法迭代过程必须自己完成)。

算法具体实现方式无要求,函数或是类封装均可,但是要写进实验报告内。不必上交代码,但要有实验过程关键步骤的截图。

可以尝试利用可视化分析实验过程(非必须)。

3. 报告要求:

实验必须独立完成不得抄袭借鉴他人的实验内容。

4. 原理说明:

简要说明感知器算法原理,可以借助伪代码来进行说明。

4.1 文字描述:

支持向量机(SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,即在分类面扩展为一个具有间隔的空间,可以看成是感知机的升级版;另外SVM还包括核方法,从而使它成为非线性分类器。

SVM的学习策略就是间隔最大化,因此相比于感知机,它有唯一的解,可以形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题,整体来看是一个求解凸函数的最优化问题

4.2 数学抽象:
4.2.1 硬间隔支持向量机

给定线性可分的训练数据集 D = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , … … , ( x ( N ) , y ( N ) ) } D = \{(\mathbf x^{(1)},y^{(1)}),(\mathbf x^{(2)},y^{(2)}),……,(\mathbf x^{(N)},y^{(N)})\} D={ (x(1),y(1)),(x(2),y(2)),,(x(N),y(N))} ,其中 ( x ( n ) , y ( n ) ) (\mathbf x^{(n)}, y^{(n)}) (x(n),y(n)) 为第 n n n个样本, x ( n ) ∈ R D \mathbf x^{(n)} \in \mathbb R^D x(n)RD 为该样本的特征向量。

对于给定的训练数据集 D D D和超平面 ( w , b ) (\mathbf w,b) (w,b),任一样本 x ( n ) \mathbf x^{(n)} x(n) 到超平面 ( w , b ) (\mathbf w,b) (w,b)的距离是
r ( n ) = ∣ w T x ( n ) + b ∣ ∥ w ∥ r^{(n)}=\frac {|\mathbf {w^T x^{(n)}}+b|}{\|\mathbf w\|} r(n)=wwTx(n)+b
一般来说,一个点距离超平面的远近可以表示分类预测的确信程度。在超平面 w T x ( n ) + b = 0 \mathbf {w^T x^{(n)}}+b=0 wTx(n)+b=0 确定的情况下, ∣ w T x ( n ) + b ∣ |\mathbf {w^T x^{(n)}}+b| wTx(n)+b 能够相对地表示点 x ( n ) \mathbf x^{(n)} x(n) 距离超平面的远近,而 w T x ( n ) + b \mathbf {w^T x^{(n)}}+b wTx(n)+b 的符号与类标记 y ( n ) y^{(n)} y(n) 的符号是否一致能够表示分类是否正确。在这个阶段之前,与感知机部分的推导是一致的。为了计算方便,我们将类标记设置为 { − 1 , + 1 } \{-1,+1\} { 1,+1} ,因此,可以使用 y ( n ) ( w T x ( n ) + b ) y^{(n)} (\mathbf {w^T x^{(n)}}+b) y(n)(wTx(n)+b) 表示分类的正确性及确信程度。当所有样本被正确分类时, r ( n ) r^{(n)} r(n) 可以写为
r ( n ) = ∣ w T x ( n ) + b ∣ ∥ w ∥ = y ( n ) ( w T x ( n ) + b ) ∥ w ∥ r^{(n)}=\frac {|\mathbf {w^T x^{(n)}}+b|}{\|\mathbf w\|}=\frac {y^{(n)} (\mathbf {w^T x^{(n)}}+b)}{\|\mathbf w\|} r(n)=wwTx(n)+b=wy(n)(wTx(n)+b)
假设超平面能将训练样本正确分类,即对于 ( x ( n ) , y ( n ) ) ∈ D (\mathbf x^{(n)}, y^{(n)}) \in D (x(n),y(n))D,若 y ( n ) = + 1 y^{(n)}=+1 y(n)=+1,则有 w T x ( n ) + b > 0 \mathbf {w^T x^{(n)}}+b \gt 0 wTx(n)+b>0;若 y ( n ) = − 1 y^{(n)}=-1 y(n)=1,则有 w T x ( n ) + b < 0 \mathbf {w^T x^{(n)}}+b \lt 0 wTx(n)+b<0 ,令
w T x ( n ) + b ≥ 0 , y ( n ) = + 1 ; w T x ( n ) + b ≤ 0 , y ( n ) = − 1 ; \mathbf {w^T x^{(n)}}+b \ge 0,y^{(n)}=+1;\\ \mathbf {w^T x^{(n)}}+b \le 0,y^{(n)}=-1; wTx(n)+b0y(n)=+1;wTx(n)+b0y(n)=1;
在线性可分的情况下,距离超平面最近的训练样本会使等号成立,被称为支持向量。即
y ( n ) ( w T x ( n ) + b ) − 1 = 0 y^{(n)}(\mathbf {w^T x^{(n)}}+b)-1=0 y(n)(wTx(

  • 3
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值