SVM支持向量机的应用

支持向量机基于统计学习理论,强调结构风险最小化。其基本思想是:对于一个给定有限数量训练样本的学习任务,通过在原空间或经投影后的高维空间中构造最优分离超平面,将给定的两类训练样本分开,构造分离超平面的依据是两类样本对分离超平面的最小距离最大化。

1.它的思想可用下图说明,图中描述的是两类样本线性可分的情形,图中“圆”和“星”分别代表两类样本。

SVM支持向量机的应用_第1张图片

 根据支持向量机原理,建立模型就是要找到最优分离超平面(最大间隔分离样本的超平面)分开两类样本。最优分离超平面可以记为:

dfa26f7b0eda42c09949e1aa4ca08f4e.png

 这样位于最优分离超平面上方的点满足:

b20fb07168e644578ba9de4c0cf0737a.png

 位于最优分离超平面下方的点满足:

e965dffd9a7c4459bb2291ba0059531b.png

 通过调整权重,边缘的超平面可以记为:

6e0a4db407d54ce8940ac5bf2fdce4bd.png

即落在或者其上方的为正类,落在H,或者其下方的为负类,综合以上得到:

991c5809870a42f9b8dd78145449a2a4.png

 落H或者H2上的训练样本,称为支持向量。

2.如何寻找最优的超平面和支持向量,需要用到更高的数学理论知识及技巧,这里不再介绍。对于非线性可分的情形,可以通过非线性映射将原数据变换到更高维空间,在新的高维空间中实现线性可分。这种非线性映射可以通过核函数来实现,常用的核函数包括:

SVM支持向量机的应用_第2张图片

3. 支持向量机分类模型构建

(1)导入支持向量机模块svm。

import sklearn import svm

(2)利用svm创建支持向量机类svm。

clf=svm.SVC(kernel='rbf')

其中核函数可以选择线性核、多项式核、高斯核、sig核,分别用1inear,poly, rbf,sigmoid表示,默认情况下选择高斯核。

(3)调用svm中的fit()方法进行训练。

clf.fit(x,y)

(4)调用svm中的score()方法,考查其训练效果。

rv=clf.score(x,y)    #模型准确率(针对训练数据)

(5)调用svm中的predict()方法,对测试样本进行预测,获得其预测结果。

R=clf.predict(x1)

示例代码如下:

import pandas as pd
data=pd.read_excel('car.xlsx")
x=data.iloc[:1690;6].as_matrix()
y=data.iloc[:1690,6].as_matrix()
x1=data.iloc[1691;:6].as_matrix()
y1=data.iloc[1691,6].as_matrix()
from sklearn importsvm
cIf= svm.SVC(kernel='rbf')
clffit(x,y)
rv=clf.score(x,y);
R=clf.predict(x1)
Z=R-y1
Rs=len(Z[Z==0])/len(Z)
print('预测结果为:'R)
print('预测准确率为:',Rs)

输出结果如下:
预测结果为:[4 3 12 3 2 43 24 33 3 3 33 3 3 3312324 324312324324]
预测准确率为: 1.0

数据来源:http://archive.ics.uci.edu/ml/datasets/Car+Evaluation

 

 

 

你可能感兴趣的:(学习,人工智能,支持向量机,机器学习,数据挖掘)