支持向量机SVM在python下的使用

本文介绍了支持向量机SVM的基础知识,包括超平面的数学描述、线性与非线性SVM及其特点。接着,通过Python展示了SVM在MNIST手写数字识别、ADULT性别判断和IRIS数据集分类的应用,强调了SVM的高效性和鲁棒性,同时也指出了SVM在大规模数据和多分类问题上的挑战。

这里我们将简要介绍下SVM是什么,然后将做一些SVM的经典例子,其中也会结合一些其他的算法来完成这些例子
我的配置:Python 3.7+, Pycharm

一 SVM介绍

1.1 SVM可以做什么

  1. 手写数字识别
    目前最好的识别水平:
    • LeNet 4(错误率<0.7%)
    • 多项式支持向量机(错误率<0.8%)
  2. 性别识别
    通过SVM来判断是男还是女
  3. 行人检测

1.2 SVM的理论基础

1.2.1 超平面的描述

在数学中,超平面是n维欧氏空间中余维度等于1的子空间,即n维空间中的超平面使n-1维的子空间。这是平面中的只献,空间中的平面的推广
F F F为域(可以先将F视为实数集R),n维空间 F n F^{n} Fn中的超平面是由以下方程确定的:
a 1 x 1 + . . . . + a n x n = b a_{1}x_{1}+....+a_{n}x_{n} = b a1x1+....+anxn=b
这个看起来是一个由多变量组成的平面,接下来我们用数学概念来理解它

① 低维空间上对超平面的简单了解

理解:高中数学课本上的“点动成线,线动成面,面动成体”

我们先从低维空间出发,在低维空间中简单的来理解超平面:

  1. 一维空间中,只有一个维度,一维坐标系为: a 1 x 1 + b = 0 a_{1}x_{1}+b=0 a1x1+b=0在一维空间上确定了一个点,点则是一维空间上的超平面
  2. 二维空间上,由两个维度,为平面直角坐标系: a 1 x 1 + a 2 x 2 + b = 0 a_{1}x_{1}+a_{2}x_{2} + b = 0 a1x1+a2x2+b=0在二维空间上确定了一条直线,则直线是二维空间上的超平面
  3. 三维空间中,三个维度,三维坐标系: a 1 x 1 + a 2 x 2 + a 3 x 3 + b = 0 a_{1}x_{1}+a_{2}x_{2}+a_{3}x_{3}+b=0 a1x1+a2x2+a3x3+b=0在三维空间上确定了一个平面,则平面是三维空间上的超平面
  4. 以此类推到n维空间上,感觉有点像降维打击和层层升级的感觉hmmm
② 系统论证(可略)

n维空间中的超平面可以由以下方程给出:
a 1 x 1 + a 2 x 2 + . . . . + a n x n + b = 0 a_{1}x_{1} + a_{2}x_{2} + .... + a_{n}x_{n} + b= 0 a1x1+a2x2+....+anxn+b=0
w w w x x x都是n维列向量, x x x n n n维空间上的法向量, b b b是一个师叔,代表圆点到超平面的距离,则有:
x = ( x 1 , x 2 , . . . , x n ) T a = a 1 , a 2 , . . . , a n T 改 写 成 a T x + b = 0 x = (x_{1}, x_{2}, ..., x_{n})^{T} \\ a = {a_{1}, a_{2}, ..., a_{n}}^{T} \\ 改写成\\ a^{T}x+b=0 x=(x1,x2,...,xn)Ta=a1,a2,...,anTaTx+b=0
在这里,我们从三维空间出发,在三维空间中,平面的定义为:
a 1 x 1 + a 2 x 2 + a 3 x 3 + b = 0 a_{1}x_{1} + a_{2}x_{2} +a_{3}x_{3} + b= 0 a1x1+a2x2+a3x3

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值