[机器学习] sklearn支持向量机
支持向量机SVM(Support Vector Machine)是一种用来进行模式识别、分类、回归的机器学习模型。
SVM原理描述
模型表示
以一个客户好坏分类为案例,客户信息如下所示:
客户信息数轴表示如下所示:
以数学表达式对上述信息进行描述,可以用下式进行表示:
然而该方法对于大型数据集容易发生拟合,且过于复杂。
因此可以忽略一些点,进行一刀切,如下所示:
但是该方法容易导致错分率高。因此SVM就是找一种方式正确的描述分类方程。
超平面
因此该超平面的公式可以用下式进行表示:
\]
其中v是样本向量,在二维空间v=(x,y),在三维空间v=(x,y,z)。w是参数向量,在二维空间w=(A,B),在三维空间w=(A,B,C)。
因此上述距离公式可以表示为:
\]
超平面确定
SVM目标是找到一个超平面,使得其在两个类中间分开。并使得该超平面到两边的距离最大,如下图所示:
但是如果对于线性不可分的情况,如下图所示:
此时上述方式无法确定超平面。在SVM在则是通过升维的方式解决。例如:
因此SVM在一维空间上解决线性不可分割的问题是把函数映射到二维空间。同样在n维空间的线性不可分割问题映射到n+1维空间。而这种映射分类函数,在svm用核函数(kernel)进行构造。
因此支持向量机具体算法步骤为:
- 把所有的样本和其标记交给算法进行训练
- 如果线性可分则直接找出超平面
- 如果线性不可分,进行映射找出超平面
- 得到超平面表达式,进行分类回归
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支持向量机的更多相关文章
- 机器学习之支持向量机(四):支持向量机的Python语言实现
注:关于支持向量机系列文章是借鉴大神的神作,加以自己的理解写成的:若对原作者有损请告知,我会及时处理.转载请标明来源. 序: 我在支持向量机系列中主要讲支持向量机的公式推导,第一部分讲到推出拉格朗日对 ...
- 机器学习之支持向量机(三):核函数和KKT条件的理解
注:关于支持向量机系列文章是借鉴大神的神作,加以自己的理解写成的:若对原作者有损请告知,我会及时处理.转载请标明来源. 序: 我在支持向量机系列中主要讲支持向量机的公式推导,第一部分讲到推出拉格朗日对 ...
- 机器学习之支持向量机(二):SMO算法
注:关于支持向量机系列文章是借鉴大神的神作,加以自己的理解写成的:若对原作者有损请告知,我会及时处理.转载请标明来源. 序: 我在支持向量机系列中主要讲支持向量机的公式推导,第一部分讲到推出拉格朗日对 ...
- python机器学习-sklearn挖掘乳腺癌细胞(五)
python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...
- python机器学习-sklearn挖掘乳腺癌细胞(四)
python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...
- python机器学习-sklearn挖掘乳腺癌细胞(三)
python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...
- python机器学习-sklearn挖掘乳腺癌细胞(二)
python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...
- python机器学习-sklearn挖掘乳腺癌细胞(一)
python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...
- 机器学习之支持向量机原理和sklearn实践
1. 场景描述 问题:如何对对下图的线性可分数据集和线性不可分数据集进行分类? 思路: (1)对线性可分数据集找到最优分割超平面 (2)将线性不可分数据集通过某种方法转换为线性可分数据集 下面将带着这 ...
随机推荐
- 通过netty把百度地图API获取的地理位置从Android端发送到Java服务器端
本篇记录我在实现时的思考过程,写给之后可能遇到困难的我自己也给到需要帮助的人. 写的比较浅显,见谅. 在写项目代码的时候,需要把Android端的位置信息传输到服务器端,通过Netty达到连续传输的效 ...
- 前端框架Vue------>第一天学习(3)
文章目录 8 .使用Axios实现异步通信 9 .表单输入绑定 9.1 . 什么是双向数据绑定 9.2 .为什么要实现数据的双向绑定 9.3 .在表单中使用双向数据绑定 8 .使用Axios实现异步通 ...
- 齐博x1.2万能参数配置接口
为何叫做万能参数接口,那是因为可以随意设置后台哪些字段可以给接口使用,还可以无限的新增接口参数,这个参数不仅仅是一个开关或文字,还可以是一张图片.一组图片.一组菜单.一个视频地址等等,非常的灵活. h ...
- Linux网络管理命令
Linux网络管理命令 ifconfig 用于配置网卡ip地址信息等网络参数或显示网络接口状态,类似于windows的ipconfig命令. 可以用这个工具来临时性的配置网卡的IP地址.掩码.广播地址 ...
- 「浙江理工大学ACM入队200题系列」问题 J: 零基础学C/C++83——宁宁的奥数路
本题是浙江理工大学ACM入队200题第八套中的J题 我们先来看一下这题的题面. 题面 题目描述 宁宁参加奥数班,他遇到的第一个问题是这样的:口口口+口口口=口口口,宁宁需要将1~9 九个数分别填进对应 ...
- jdk线程池ThreadPoolExecutor工作原理解析(自己动手实现线程池)(一)
jdk线程池ThreadPoolExecutor工作原理解析(自己动手实现线程池)(一) 线程池介绍 在日常开发中经常会遇到需要使用其它线程将大量任务异步处理的场景(异步化以及提升系统的吞吐量),而在 ...
- 2022春每日一题:Day 20
题目:Secret Message 老师说的trie树入门题 对于每个密码,存入trie树,每个字符对应编号i,则sum[i]++,最后结尾的编号为j,cnt[j]++ 查询,每个字符对应编号为i,不 ...
- minio API demo
package mainimport ( "context" "fmt" "github.com/minio/minio-go/v7" &q ...
- WSL下的Ubuntu 18.04LTS配置软件源和系统更新
WSL下的Ubuntu 18.04LTS配置软件源和系统更新 设置系统语言为中文 # 安装中文支持 sudo apt-get install -y language-pack-zh-hans # 设置 ...
- lauyi渲染
下拉框 <div class="layui-form-item x-city" id="start"> <label class=" ...