二维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中的数据,训练一个线性的支持向量机,训练好