支持向量机(SVM):用一条线分开红豆与绿豆
算法原理
要找到一些线,这些线都可以分割红豆和绿豆,找到正确的方向或者斜率的那条线,确认马路的宽度,得到最优解--马路的中轴
超平面:在三维空间中,平面是两个点距离相同的点的轨迹。一个平面没有厚度,而且可以把空间分割成两部分。超平面是在维度大于三维度的时候仍然满足上面的条件,而且它的自由度比空间维度小1。(通俗讲,在二维中就是直线,三维就是平面,在三维以上的就是超平面)
支持向量:假设找到一条线可以可以分割红豆和绿豆,红豆和绿豆中距离这条线最近的几个样本点被称为支持向量。这些点到这条线的距离叫间隔。
注意:在决定最佳超平面时只有支持向量起作用,而其他数据点并不起作用
如何处理不清晰的边界
软间隔:在这个间隔区域里允许出现一定数量的样本,这个间隔为软间隔
硬间隔:划分非常清晰,在间隔中间没有任何红豆和绿豆的理想状态下,这个间隔为硬间隔
如何处理非线性可分

svm采取的办法:把不可划分的样本映射到高维空间。借助“核函数”来映射到高维的操作
常见的核函数:线性核函数、多项式核函数、高斯核函数
算法优点
1.有严格的数学理论支持,可解释性强(能得到全局最优解)
2.算法的鲁棒性很好(指控制系统在一定(结构,大小)的参数摄动下,维持其它某些性能的特性)【支持向量没问题就没问题】
算法缺点
1.训练集所需要的资源很大(只能处理小数据集比如几千条)
2.只能处理二分类问题
3.模型预测时,预测时间与支持向量个数成正比
#SVM
from sklearn import datasets #sklearn的数据集
from sklearn import svm #引入svm包
import numpy as np #矩形运算库numpy np.random.seed(0)
#设置随机种子,不设置的话默认是按系统时间作为参数,设置后可以保证我们每次产生的随机数是一样的 iris = datasets.load_iris() #获取鸢尾花数据集
iris_x = iris.data #数据部分
iris_y = iris.target #类别部分 #从150条数据中选取140条作为训练集,10条作为测试集。permutation接收一个数作为参数(这里为数据集长度150),
#产生一个0-149乱序一维数组
indices = np.random.permutation(len(iris_x))
iris_x_train = iris_x[indices[:-10]] #训练集数据
iris_y_train = iris_y[indices[:-10]] #训练集标签
iris_x_test = iris_x[indices[-10:]] #测试集数据
iris_y_test = iris_y[indices[-10:]] #测试集数据 #使用线性核SVC是分类支持向量机的意思,另外还有SVR是回归支持向量机
clf = svm.SVC(kernel='linear') #调用该对象的训练方法,主要接收两个参数:训练数据集及其类别标签
clf.fit(iris_x_train,iris_y_train) #拟合 #调用该对象的测试方法,主要接收一个参数:测试数据集
iris_y_predict = clf.predict(iris_x_test) #调用该对象的打分方法,计算出准确率
score = clf.score(iris_x_test,iris_y_test,sample_weight=None) #输出测试结果
print('iris_y_predict=')
print(iris_y_predict) #输出原始测试数据集的正确标签,以方便对比
print('iris_y_test=')
print(iris_y_test) #输出准确率计算结果
print('Accuracy:',score)
支持向量机(SVM):用一条线分开红豆与绿豆的更多相关文章
- 一步步教你轻松学支持向量机SVM算法之理论篇1
一步步教你轻松学支持向量机SVM算法之理论篇1 (白宁超 2018年10月22日10:03:35) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...
- OpenCV支持向量机(SVM)介绍
支持向量机(SVM)介绍 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 CvSVM::train 训练一个SVM分类器, 以及用 CvSVM::predict 测试训练结果. 什么是支持向 ...
- 支持向量机SVM 参数选择
http://ju.outofmemory.cn/entry/119152 http://www.cnblogs.com/zhizhan/p/4412343.html 支持向量机SVM是从线性可分情况 ...
- 转:机器学习中的算法(2)-支持向量机(SVM)基础
机器学习中的算法(2)-支持向量机(SVM)基础 转:http://www.cnblogs.com/LeftNotEasy/archive/2011/05/02/basic-of-svm.html 版 ...
- 【Supervised Learning】支持向量机SVM (to explain Support Vector Machines (SVM) like I am a 5 year old )
Support Vector Machines 引言 内核方法是模式分析中非常有用的算法,其中最著名的一个是支持向量机SVM 工程师在于合理使用你所拥有的toolkit 相关代码 sklearn-SV ...
- 模式识别之svm()---支持向量机svm 简介1995
转自:http://www.blogjava.net/zhenandaci/archive/2009/02/13/254519.html 作者:Jasper 出自:http://www.blogjav ...
- 机器学习-5 支持向量机SVM
一.概念和背景 SVM:Support Vector Machine 支持向量机. 最早是由Vladimir N. Vapnik和Alexey Ya. Chervonenkis在1963年提出的. 目 ...
- [白话解析] 深入浅出支持向量机(SVM)之核函数
[白话解析] 深入浅出支持向量机(SVM)之核函数 0x00 摘要 本文在少用数学公式的情况下,尽量仅依靠感性直觉的思考来讲解支持向量机中的核函数概念,并且给大家虚构了一个水浒传的例子来做进一步的通俗 ...
- Stanford机器学习---第八讲. 支持向量机SVM
原文: http://blog.csdn.net/abcjennifer/article/details/7849812 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回 ...
随机推荐
- 错误代码 insufficient-isv-permissions 错误原因: ISV权限不足
前言 PC网页吊起支付宝支付界面报了如下这么个错误: 我明明申请的支付宝支付功能列表的签约已经生效了呀!怎么回事呢? 解决 支付宝商户中心:https://b.alipay.com/signing/p ...
- Java中class的前面添加public和不添加public有什么区别?
需要知道的是修饰类和变量的用来控制这个被修饰的类和变量的适用范围的修饰词有: 1.public:表示公开的类和变量,既所有的类都可以引入使用的. 2.protected:表示受保护的类,只有子孙类和本 ...
- Android 使用签名的好处【转】
感谢大佬:https://zhidao.baidu.com/question/360127490062917572.html 平时我们的程序可以在模拟器上安装并运行,是因为在应用程序开发期间,由于是以 ...
- cookie、session、jsession 关系
感谢大佬:https://www.cnblogs.com/fsjin/articles/3490531.html 在使用CAS的时候,对Cookies.session.jsession 这三者是什么不 ...
- cell重用
少数几个cell可不重用 NSString *CellIdentifier = [NSString stringWithFormat:@"MyCellID_%d",indexPat ...
- springBoot2.*使用redis集群/单机方法
在springboot1.x系列中,其中使用的是jedis,但是到了springboot2.x其中使用的是Lettuce. 此处springboot2.x,所以使用的是Lettuce.关于jedis跟 ...
- Hadoop启动错误——ERROR: Attempting to operate on hdfs namenode as root but there is no HDFS_NAMENODE_USER defined. Aborting operation.
错误如下所示; [root@localhost sbin]# start-all.sh Starting namenodes on [192.168.71.129] ERROR: Attempting ...
- pytest(7)-yield与终结函数
通过上一篇文章,我们已经知道了pytest中,可以使用Fixture来完成运行测试用例之前的一些操作如连接数据库,以及测试执行之后自动去做一些善后工作如清空脏数据.关闭数据库连接等. 我们已经学会了f ...
- Solution -「ZJOI 2013」「洛谷 P3337」防守战线
\(\mathcal{Description}\) Link. 有 \(n\) 个位置,从左至右编号 \(1\sim n\).在第 \(i\) 个位置放一座塔的代价为 \(c_i\),一个位置 ...
- Office RTF远程模板注入
远程模板插入 ProofPoin最近写了一篇文章,报告中提到近年来RTF模板注入进行office钓鱼攻击的数量增加.之前还没怎么了解过RTF模板注入的,现在和小编一起去看看吧(笑hhh). 相 ...