1.源代码
clc; clear all; close all; load fisheriris; %matlab自带分类数据集fisheriris,来源于http://archive.ics.uci.edu/ml/ 中的risi数据, %其数据类别分为3类,setosa,versicolor,virginica.每类植物有50个样本,共150个。 %每个样本有4个属性,分别为花萼长,花萼宽,花瓣长,花瓣宽。 %其中meas是150*4的矩阵代表着有150个样本每个样本有4个属性描述 %species代表着这150个样本的分类. data = [meas(:,1),meas(:,2)]; %构建测试数据 %在这里只取meas的第一列和第二列,即只选取前两个特征 groups = ismember(species,'setosa'); %构建测试结果 %由于species分类中是有三个分类:setosa,versicolor,virginica %为了使问题简单,我们将其变为二分类问题:Setosa and non-Setosa. [train,test] = crossvalind('holdOut',groups,0.5); %生成交叉验证指标 [Train, Test] = crossvalind('HoldOut', N, P) %返回一个逻辑值的标记向量,从N个观察样本中随机选取(或近似于)P*N个样本作为测试集。 %故P应为0-1,缺省值为0.5。 cp = classperf(groups); %评估分类器性能 svmStruct = svmtrain(data(train,:),groups(tra