支持向量机(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)包括单参数的线性回归.多参数的线性回 ...
随机推荐
- Java 给Word每一页设置不同图片水印效果
Word中设置水印时,可加载图片设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果,如果需要对每一页或者某个页面设置不同的水印效果,则可以参考本文中的方法.下面,将以Java代码为例, ...
- 前后端数据json交换的问题
问题1:前端发送给后端数据了,后端也接收到了,后端同时返回数据给前端了,但是前端的ajax请求中的success(data){}中的方法不执行 解决:排查了很多问题,结果都一一排除了,最后发现后端发送 ...
- 一次SQL查询优化原理分析(900W+数据,从17s到300ms) (转)
有一张财务流水表,未分库分表,目前的数据量为9555695,分页查询使用到了limit,优化之前的查询耗时16 s 938 ms (execution: 16 s 831 ms, fetching: ...
- go基础——数值传递与值传递
package main import "fmt" /* 1.值类型:存储的是数值本身,数据传递给其他变量时传递的是数据的副本. int,float,string,bool,arr ...
- LeetCode随缘刷题之截断句子
这道题相对比较简单.正好最近学到StringBuilder就用了. package leetcode.day_12_06; /** * 句子 是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前 ...
- 解决/WEB-INF目录下的jsp页面引入webRoot下的Js、css和图片的问题
通常把jsp页面放在webRoot的/WEB-INF下可以防止访问者直接输入页面. 而webRoot的/WEB-INF下的页面是受保护的,用户无法通过形如http://localhost:8080/t ...
- 一款免费在线转pdf的工具 和 window免费镜像
PDF爱好者的在线工具 完全免费的PDF文件在线管理工具,其功能包括:合并PDF文件.拆分PDF文件.压缩PDF文件.Office文件转换为PDF文件.PDF文件转换为JPG图片.JPG图片转换为PD ...
- Solution Set -「ARC 107」
「ARC 107A」Simple Math Link. 答案为: \[\frac{a(a+1)\cdot b(b+1)\cdot c(c+1)}{8} \] 「ARC 107B」Quadrup ...
- 解决POI多线程导出时数据错乱问题
项目里有一个导出功能,但随着数据量大量上涨,导出时间长到不可忍受,遂重写此接口,多线程导出的代码并不复杂,每页有一条线程负责写入,利用线程池去调度,用countdownLatch保证在所有数据写完后再 ...
- MySQL数据库备份的4种方式
MySQL备份的4种方式 总结: 备份方法 备份速度 恢复速度 便捷性 功能 一般用于 cp 快 快 一般.灵活性低 很弱 少量数据备份 mysqldump 慢 慢 一般.可无视存储引擎的差异 一般 ...