二维SVM的可视化解释

来源:互联网 发布:顺序表逆置算法 编辑:程序博客网 时间:2024/05/22 22:52

二维SVM的可视化解释(数字化图像处理与机器视觉P557)

使用svmtrain( )和svmclassify( )函数解决了一个二维空间的两类问题。

 本例使用MATLAB自带的鸢尾属植物数据集来将刚刚学习的SVM训练和分类付诸实践,数据集本身共有150个样本,每个样本为一个4维的特征向量,这4维特征向量意义为:花瓣长度,花瓣宽度,萼片长度,萼片宽度,150个样本分别属于3类鸢尾属植物(每类50个样本)。实验中智勇了前二维特征,这主要是为了便于训练和分类结果的可视化。为了暂时避开多类问题,将样本是哪一类的3类问题变成了样本是不是“setosa”类的两类问题。


Matalab代码:


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
classes=svmclassify(svmStruct,data(test,:),'showplot',true);       %利用包含训练所得分类器信息的svmStruct对测试样本进行分类,分类结果保存操classes


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


 结果:accuracy=0.9867
0 0
原创粉丝点击