码迷,mamicode.com
首页 > 其他好文 > 详细

支持向量机(SVM)

时间:2017-12-21 17:22:18      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:style   学习   set   核函数   max   from   分类器   最大化   mat   

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)

标签:style   学习   set   核函数   max   from   分类器   最大化   mat   

原文地址:http://www.cnblogs.com/hhh123/p/8081164.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!