您的位置:首页 > 编程语言 > MATLAB

支持向量机SVM的MATLAB实现

2017-11-16 15:23 2571 查看

1.支持向量机

Support Vector Machine,SVM。

1.1分类思想

以结构化风险最小为原则,兼顾训练误差与测试误差的最小化。

2.svm

2.1线性;

2.2非线性CSVM;

2.3核函数的SVM:非线性映射(把低维映射到高维;采用核函数来实现映射过程)

2.3.1多类问题

一对多:将需要划分的训练集进行枚举,取响应最大的那个;

一对一:两两组合,选出归类最多的那个组合;

一对一淘汰:引入分类器置信度信息的二分器;采用各个SVM二分器的分类间隔作为置信度。利用判别函数之间的冗余进行对“拒绝决策”的分类。

3.MATLAB代码

load fisheriris;
data=[meas(:,1),meas(:,2)];                                       %取出样本的前2维(列)作为特征,并存入data(不需要预先定义类型,自动识别)中。
groups=ismember(species,'setosa');                                %转化为“是不是setosa类”的2类问题
[train,test]=crossvalind('holdOut',groups);                        %利用交叉验证随机分割数据集,train保存训练数据,test保存测试数据。
svmStruct=svmtrain(data(train,:),groups(train),'showplot',true);   %利用train中的数据,训练一个线性的支持向量机,训练好的分类保存在svmStruct。其中,data(train,:)把train==1的数据提取出来。
classes=svmclassify(svmStruct,data(test,:),'showplot',true);       %利用包含训练所得分类器信息的svmStruct对测试样本进行分类,分类结果保存操classes

%计算测试样本的识别率
nCorrect=sum(classes==groups(test,:));                              %正确分类的样本数目
accuracy=nCorrect/length(classes);                                  %计算正确率


SVMStruct可以自定义选项,如核函数。

参考:http://whuhan2013.github.io/blog/2017/01/07/pca-and-svm/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  svm