数据处理系列
第四章 支持向量机(Support Vector Machine)
文章目录
一、什么是支持向量机(SVM)?
支持向量机
(Support Vector Machine,SVM)是一种常用的机器学习算法,主要用于分类
问题。
它的主要思想是通过找到一个最优的超平面来划分不同类别
的样本。
二、支持向量机的原理
支持向量机通过将样本映射到高维特征空间
,可以将非线性问题转化为线性问题。在特征空间中,支持向量机寻找一个超平面,使得两个不同类别的样本点离超平面的距离最大化
。
三、支持向量机的Python实现
1.引入sklearn库
# 引入库
import numpy as np
from sklearn.svm import SVC
注:未安装sklearn可以通过在cmd窗口执行以下命令安装:
pip --default-timeout=100 install scikit-learn -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
2.读入数据
data = [[0], [1], [2], [3]]
y = [0, 1, 2, 3]
3.创建SVM
clf = SVC(decision_function_shape='ovo')
clf.fit(data, y)
decision_function_shape
的参数为:'ovr'
或'ovo'
ovr
:一对多法(one-versus-rest
,简称1-v-r SVMs, OVR SVMs)。分类中将模型分为1:M(即一类和其他),需要针对每一类数据构造SVM,当数据量大时偏差较大,不建议使用
。
ovo
:一对一法(one-versus-one
,简称1-v-1 SVMs, OVO SVMs,)。在任意两类样本之间设计一个SVM,因此k个类别的样本就需要设计k(k-1)/2个SVM,当对一个未知样本进行分类时,最后得票最多的类别即为该未知样本的类别。该方法偏差较小
,但在数据分类多时训练量大
。
4.测试结果
print(clf.predict([[-1], [2], [0.3]]))
输出结果为:
[0 2 0]
四、支持向量机的优缺点
1、支持向量机的优点
支持向量机能够处理高维特征空间
和非线性分类
问题。它具有良好的泛化
能力,可以处理小样本
问题。
此外,支持向量机还可以通过核函数
来处理非线性问题。
2、支持向量机的缺点
支持向量机的训练时间
较长,对于大规模数据集而言计算复杂度较高
。
此外,在处理多分类问题时,支持向量机需要进行多次二分类
,效率较低。
总结
支持向量机是一种强大的分类器
,其在实际应用中广泛被使用,特别是在数据量较小、特征维度较高和非线性问题等方面具有优势。