支持向量机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

最新文章

  1. 常见的JAVA包
  2. QuickHit快速击键小程序 --S2.4.5
  3. Some About Spring
  4. zabbix监控系列(2)之zabbix-agent安装
  5. 关于SQL Server无法查询中文的问题
  6. Web Servic和Web API的区别
  7. Leetcode 1 two sum 难度:0
  8. ActiveReports 报表应用教程 (7)---交叉报表及数据透视图实现方案
  9. Spring IoC — 基于注解的配置
  10. interactive_timeout和wait_timeout(
  11. Linux&shell之高级Shell脚本编程-创建菜单
  12. FileUtils类应该有哪些内容
  13. 【Android进阶】Android面试题目整理与讲解(一)
  14. 同步中的四种锁synchronized、ReentrantLock、ReadWriteLock、StampedLock
  15. Scala入门系列(四):Map & Tuple
  16. 工厂模式讲解, 引入Spring IOC
  17. 荣耀7.0系统手机最简单激活Xposed框架的步骤
  18. python小技巧---打印出不同颜色的输出
  19. qt+opencv LNK4272:library machine type 'x64' conflicts with target mathine type 'x86'
  20. javascript 深度克隆对象

热门文章

  1. 洛谷P1656 炸铁路 (求割边)
  2. java连接数据库加载驱动到java项目
  3. 齐博x1小程序集群一个重要功能升级,可以根据圈子会员组显示不同的菜单。
  4. Ansible 批处理实战
  5. 项目实战:在线报价采购系统(React +SpreadJS+Echarts)
  6. 前端html和css总结
  7. GNN 101
  8. Oracle数据泵导入dmp文件,报UDI-00013、UDI-00019错误原因
  9. TDSQL-C 真·秒级启停:连接断了,又没断
  10. 基于socket开发网络调试助手