支持向量机 - 从原理到算法的实现
思想:寻找能够成功分开两类样本并且具有最大分类间隔的最优超平面。
1.原理解析
空间中任何一个平面的方程都可以表示为wx+b =0,如上图,设最优超平面方程H为wx+b=0,支持向量x-到H的距离为,要使分类间隔最大,即该距离最大,而该距离只与|w|有关,分子为一个常数,为了简单优美,设分子常数为-1,则H1平面方程为wx+b = -1,同理H2平面方程为wx+b = 1。
则H1H2间的距离为( - ) . =
间隔最大等价于最小化,故目标函数为J(w)=
这个编辑器很难用,不想打公式了,直接上草稿 :
2.实例
- #1、读入数据
- import numpy as np
- dataList = []
- labelList = []
- def loadData(fileName):
- f = open(fileName)
- for line in f.readlines():
- lineStr = line.split('\t')
- dataList.append([float(lineArr[0]),float(lineArr[1])])
- labelList.append(float(lineArr[2]))
- return dataList,labelList
- dataList,labelList = loadData('testSet.txt')
- #2、训练支持向量机
- from sklearn import svm
- #基于libsvm工具箱,SVC非线性支持向量分类,可通过核定义其核函数,如‘linear’为线性,‘rbf’为径向基核函数
- clf = svm.SVC(kernel='linear')
- clf.fit(dataList,labelList)#训练
- #3、预测
- clf.predict([[7.5,-1.5]])#预测类别
- clf.decision_function([[7.5,-1.5]])#该SVC方法decision_function为每个样本提供每个类别的分数相当于回归
- #支持向量
- clf.support_vectors_#获得支持向量
- clf.support_#获得支持向量索引
- clf.n_support_#获得支持向量属于不同类别的个数
- #4、绘制决策边界和支持向量
- labelArr = np.array(labelList)
- x_min, x_max = dataArr[:, 0].min() - 1, dataArr[:, 0].max() + 1
- y_min, y_max = dataArr[:, 1].min() - 1, dataArr[:, 1].max() + 1
- xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),np.arange(y_min, y_max, 0.02))#meshgrid在空间上取点
- Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])#ravel平铺,相当于np.hstack(xx)
- row = len(np.arange(y_min,y_max,0.02))
- col = len(np.arange(x_min,x_max,0.02))
- Z = Z.reshape([row,col])
- #plt.cm中cm全称表示colormap,paired表示两个两个相近色彩输出,比如浅蓝、深蓝;浅红、深红;浅绿,深绿这种
- plt.contourf(xx, yy, Z, cmap=plt.cm.Paired)
- plt.scatter(dataArr[:, 0], dataArr[:, 1], c=labelList)#画出数据点
- plt.scatter(dataArr[clf.support_,0],dataArr[clf.support_,1],c = 'red',s = 100,marker='o')#画出支持向量
<script>(function(){function setArticleH(btnReadmore,posi){var winH = $(window).height();var articleBox = $("div.article_content");var artH = articleBox.height();if(artH > winH*posi){articleBox.css({'height':winH*posi+'px','overflow':'hidden'})btnReadmore.click(function(){articleBox.removeAttr("style");$(this).parent().remove();})}else{btnReadmore.parent().remove();}}var btnReadmore = $("#btn-readmore");if(btnReadmore.length>0){if(currentUserName){setArticleH(btnReadmore,3);}else{setArticleH(btnReadmore,1.2);}}})()</script></article>
支持向量机 - 从原理到算法的实现相关推荐
- 支持向量机算法的实现和应用(Python3超详细的源码实现+图介绍)
支持向量机算法的实现和应用,因为自己推到过SVM,建议自己推到一遍, 这里不对SVM原理做详细的说明. 原理公式推到推荐看:https://blog.csdn.net/jcjx0315/article ...
- 53.垃圾回收算法的实现原理、启动Java垃圾回收、Java垃圾回收过程、垃圾回收中实例的终结、对象什么时候符合垃圾回收的条件、GC Scope 示例程序、GC OutOfMemoryError的示例
53.垃圾回收算法的实现原理 53.1.目录 53.2.启动Java垃圾回收 53.3.Java垃圾回收过程 53.4.垃圾回收中实例的终结 53.5.对象什么时候符合垃圾回收的条件? 53.5.1. ...
- 垃圾回收算法的实现原理_有关垃圾回收算法工作原理的动画指南
垃圾回收算法的实现原理 Garbage Collection is the process of cleaning up a computer's memory by getting rid of d ...
- 【分布式ID】理解Snowflake算法的实现原理
1.概述 转载:冷饭新炒:理解Snowflake算法的实现原理 我上次也看了一个视频讲解:[分布式ID]键高并发 分布式 全局唯一 ID 雪花算法 snowflake 2.前提# Snowflake( ...
- 几种随机算法的实现原理
在日常工作中,经常需要使用随机算法.比如面对大量的数据, 需要从其中随机选取一些数据来做分析. 又如在得到某个分数后, 为了增加随机性, 需要在该分数的基础上, 添加一个扰动, 并使该扰动服从特定的概 ...
- 冒泡算法的实现原理:(从小到大排序)
冒泡算法的实现原理:(从小到大排序) 1:比较相邻的两个元素,如果第一个比第二个大就交换位置 2:对每一对相邻的元素进行比较,从开始第一对到结尾的最后一对,这样最后的元素就是最大的了 3:每一次这样循 ...
- matlab中注水算法的实现和原理
注水算法的实现及详细原理 注水算法的公式 算法的相关公式用图片展示 注水算法的公式 这公式怎么编辑啊,有点复杂啊 算法的相关公式用图片展示 前段时间学习使用注水算法,CSDN上分享的代码有很多,大同小 ...
- 统计学习方法|支持向量机(SVM)原理剖析及实现
欢迎直接到我的博客查看最近文章:www.pkudodo.com.更新会比较快,评论回复我也能比较快看见,排版也会更好一点. 原始blog链接: http://www.pkudodo.com/2018/ ...
- 计算机图形学 区域填充,计算机图形学 区域填充算法的实现
. '. 实验四区域填充算法的实现班级 08信计学号 58 姓名陈瑞雪分数 一.实验目的和要求: 1.掌握区域填充算法基本知识 2.理解区域的表示和类型,能正确区分四连通和八连通的区域 3.了解区域填 ...
最新文章
- 76 从OpenCV学习C++ 高级语言特性
- javascript 迁移 typescript 实践
- Android ListView几个重要属性
- date转timestamp格式_技术分享 | MySQL:timestamp 时区转换导致 CPU %sys 高的问题
- 如果年轻,就出发吧!
- TDengine安装教程
- 技术面试问项目难题如何解决的_技术创新 | 降本增效,青海农信社项目小伙刻苦钻研解决联合支架设计难题!...
- 485通信实现自动收发功能
- 2014年国内最热门的.NET开源项目TOP25
- html宽度满屏,宽度满屏的代码怎么样写?
- 返回两个时间范围内的一个随机时间
- 【转载】SI 9000 及阻抗匹配学习笔记(一)
- 数据可视化工具软件哪个最好
- 周立功USBCAN-II的Python调用
- 海康播放视频Demo
- 如何打开windows的服务管理
- Image data cannot be converted to float
- 注塑工艺工程师视频教程 注塑机调机成型参数教程
- 8/人天,小记一次 JAVA(APP后台) 项目改造 .NET 过程(后台代码已开源于 Github)
- HTML怎么设艺术字体,用CSS设计艺术字集锦(二)