支持向量机(SVM)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支持向量机(SVM)相关的知识,希望对你有一定的参考价值。

SVM算法的学习策略就是间隔最大化,是求解凸二次规划的最优化算法,也等价于正则化的合页损失函数的最小化问题。

SVM适合中小规模的数据,预测时不能给出具体的概率结果

 

支持向量机包含三种模型:1、线性可分支持向量机;

                                       2、线性支持向量机;

                                       3、非线性支持向量机;

SVM算法的优缺点:

优点:泛化错误率低,计算开销不大,结果易理解;

缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二分类问题

 

SVM算法的python实现:

(这里直接用的sklearn中的API,参考视频中的代码)

 1 #coding=utf-8
 2 
 3 import numpy as np
 4 import pylab as pl
 5 from sklearn import svm
 6 from matplotlib.colors import ListedColormap
 7 
 8 svc = svm.SVC(kernel=linear)  # 线性核
 9 # svc = svm.SVC(kernel=‘poly‘)  # 多项式核
10 # svc = svm.SVC(kernel=‘rbf‘)  # 高斯核(RBF)
11 
12 # 鸢尾花数据集是sklearn自带的。
13 from sklearn import datasets
14 iris = datasets.load_iris()
15 # 只提取前面两列数据作为特征
16 X = iris.data[:, :2]
17 y = iris.target
18 
19 # 因为鸢尾花是3分类问题,我们要对样本和预测结果均用三种颜色区分开。
20 cmap_light = ListedColormap([#FFAAAA, #AAFFAA, #AAAAFF])
21 cmap_bold = ListedColormap([#FF0000, #00FF00, #0000FF])
22 
23 # 基于分类器对预测结果与原始标签进行可视化
24 def plot_estimator(estimator, X, y):
25     estimator.fit(X, y)     # 基于这些数据训练出一个支持向量分离器SVC
26     # 确定网格最大最小值作为边界
27     x_min, x_max = X[:, 0].min() - .1, X[:, 0].max() + .1
28     y_min, y_max = X[:, 1].min() - .1, X[:, 1].max() + .1
29     # 产生网格节点
30     xx, yy = np.meshgrid(np.linspace(x_min, x_max, 100),
31                          np.linspace(y_min, y_max, 100))
32     # 基于分离器,对网格节点做预测
33     # 多分类的工作方式就是"one versus one" :在任意两类样本之间设计一个SVM,因此k个类别的样本就需要设计k(k-1)/2个SVM
34     # 当对一个未知样本进行分类时,最后得票最多的类别即为该未知样本的类别
35     Z = estimator.predict(np.c_[xx.ravel(), yy.ravel()])
36 
37     # 对预测结果上色
38     Z = Z.reshape(xx.shape)
39     pl.figure()
40     pl.pcolormesh(xx, yy, Z, cmap=cmap_light)
41     # 同时对原始训练样本上色
42     pl.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold)
43     pl.axis(tight)
44     pl.axis(off)
45     pl.tight_layout()
46     pl.show()
47 
48 # 测试SVM算法
49 plot_estimator(svc, X, y)

 

以上是关于支持向量机(SVM)的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB 支持向量机 (SVM) 交叉验证实现以提高代码速度

机器学习:通俗理解支持向量机SVM及代码实践

机器学习速成宝典模型篇08支持向量机SVM(附python代码)

机器学习基础:通俗理解支持向量机SVM及代码实践

深入解析:svm支持向量机python代码

基于支持向量机SVM的脑部肿瘤识别,脑电波样本熵提取