支持向量机SVM(Support Vector Machine)是一种用来进行模式识别、分类、回归的机器学习模型。

SVM原理描述

模型表示

以一个客户好坏分类为案例,客户信息如下所示:

客户信息数轴表示如下所示:

以数学表达式对上述信息进行描述,可以用下式进行表示:

然而该方法对于大型数据集容易发生拟合,且过于复杂。

因此可以忽略一些点,进行一刀切,如下所示:

但是该方法容易导致错分率高。因此SVM就是找一种方式正确的描述分类方程。

超平面

因此该超平面的公式可以用下式进行表示:

\[g(v)=wv+b
\]

其中v是样本向量,在二维空间v=(x,y),在三维空间v=(x,y,z)。w是参数向量,在二维空间w=(A,B),在三维空间w=(A,B,C)。

因此上述距离公式可以表示为:

\[d(v)=|g(v)|/\left \| w \right \|
\]

超平面确定

SVM目标是找到一个超平面,使得其在两个类中间分开。并使得该超平面到两边的距离最大,如下图所示:

但是如果对于线性不可分的情况,如下图所示:

此时上述方式无法确定超平面。在SVM在则是通过升维的方式解决。例如:

因此SVM在一维空间上解决线性不可分割的问题是把函数映射到二维空间。同样在n维空间的线性不可分割问题映射到n+1维空间。而这种映射分类函数,在svm用核函数(kernel)进行构造。

因此支持向量机具体算法步骤为:

  1. 把所有的样本和其标记交给算法进行训练
  2. 如果线性可分则直接找出超平面
  3. 如果线性不可分,进行映射找出超平面
  4. 得到超平面表达式,进行分类回归

sklearn实现

在sklearn支持向量机主要用SVC类支持。SVC所支持的和函数有linear(线性和函数)、rbf(径向基核函数)、sigmoid(神经元激活函数)等,通常推荐使用rbf函数。以客户评价为例代码如下:

from sklearn import svm
import numpy as np
#年龄
X = np.array([[34, 33, 32, 31, 30, 30, 25, 23, 22, 18]])
X = X.T
#质量
y = [1, 0, 1, 0, 1, 1, 0, 1, 0, 1] clf = svm.SVC(kernel='rbf').fit(X, y) p = [[30]]
print(clf.predict(p)) #1

函数其他参数改动可参考官网文档:svm

[机器学习] sklearn支持向量机的更多相关文章

  1. 机器学习之支持向量机(四):支持向量机的Python语言实现

    注:关于支持向量机系列文章是借鉴大神的神作,加以自己的理解写成的:若对原作者有损请告知,我会及时处理.转载请标明来源. 序: 我在支持向量机系列中主要讲支持向量机的公式推导,第一部分讲到推出拉格朗日对 ...

  2. 机器学习之支持向量机(三):核函数和KKT条件的理解

    注:关于支持向量机系列文章是借鉴大神的神作,加以自己的理解写成的:若对原作者有损请告知,我会及时处理.转载请标明来源. 序: 我在支持向量机系列中主要讲支持向量机的公式推导,第一部分讲到推出拉格朗日对 ...

  3. 机器学习之支持向量机(二):SMO算法

    注:关于支持向量机系列文章是借鉴大神的神作,加以自己的理解写成的:若对原作者有损请告知,我会及时处理.转载请标明来源. 序: 我在支持向量机系列中主要讲支持向量机的公式推导,第一部分讲到推出拉格朗日对 ...

  4. python机器学习-sklearn挖掘乳腺癌细胞(五)

    python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...

  5. python机器学习-sklearn挖掘乳腺癌细胞(四)

    python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...

  6. python机器学习-sklearn挖掘乳腺癌细胞(三)

    python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...

  7. python机器学习-sklearn挖掘乳腺癌细胞(二)

    python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...

  8. python机器学习-sklearn挖掘乳腺癌细胞(一)

    python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...

  9. 机器学习之支持向量机原理和sklearn实践

    1. 场景描述 问题:如何对对下图的线性可分数据集和线性不可分数据集进行分类? 思路: (1)对线性可分数据集找到最优分割超平面 (2)将线性不可分数据集通过某种方法转换为线性可分数据集 下面将带着这 ...

随机推荐

  1. 微信电脑版DAT文件转图片工具

    一键批量将微信聊天接受到的加密存储DAT图片文件转化为普通图片. 通过查看转化后的图片,您可以: (1)清理无用的历史图片,节省电脑硬盘存储空间. (2)恢复寻找重要照片资料. 下载地址:点此下载 微 ...

  2. Java学习之路:运算符

    2022-10-10 10:34:08 1 运算符 算术运算符:+, -, *, /, %, ++, -- 赋值运算符:= 关系运算符:>, <, >=, <=, ==, != ...

  3. instanceof的使用和向下转型

    x instanceof A:检验x是否为类A的对象,返回值为boolean型 使用情境:为了避免在向下转型时出现ClassCastException的异常,我们在向下转型之前,先进行instance ...

  4. vlunhub靶场之EMPIRE: LUPINONE

    准备: 攻击机:虚拟机kali.本机win10. 靶机:EMPIRE: LUPINONE,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhub ...

  5. 网页头部的声明应该是用 lang="zh" 还是 lang="zh-CN"?

    网页头部的声明应该是用 lang="zh" 还是 lang="zh-CN"? 遇到问题 不知道大家有没有留意到一个问题,就是使用 VsCode 新建的 html ...

  6. golang中的nil接收器

    索引:https://waterflow.link/articles/1666534616841 我们先看一个简单的例子,我们自定义一个错误,用来把多个错误放在一起输出: type CustomErr ...

  7. python face_recognition安装及各种应用

    1.安装 首先,必须提前安装cmake.numpy.dlib,其中,由于博主所用的python版本是3.6.4(为了防止不兼容,所以用之前的版本),只能安装19.7.0及之前版本的dlib,所以直接p ...

  8. Tesla-E380,4K eDP一键点屏神器问世

    eDP屏快速点亮,EDID回读, eDP屏调试 是否为点屏的准备工作感到烦躁: 1)查找LCD模组的数据手册(常常还未必能找着) 2)在上位机软件或者单片机程序里设置一大堆的LCD屏参,这个频率,那个 ...

  9. 京东云开发者| Redis数据结构(二)-List、Hash、Set及Sorted Set的结构实现

    1 引言 之前介绍了Redis的数据存储及String类型的实现,接下来再来看下List.Hash.Set及Sorted Set的数据结构的实现. 2 List List类型通常被用作异步消息队列.文 ...

  10. nrf9160做主控连接阿里云——(mqtt_simple例程)

    简介:基本每一个云都支持MQTT,这种轻量级协议在数据量不大的应用上是一个很好的选择.上一篇博客使用SLM例程去连接了阿里云,本次使用mqtt_simple去连接云进行测试,关于一些已近在前面文章中演 ...