1 load fisheriris
2 %载入系统的鸢尾属植物,有4维特征,分别属于3类鸢尾属植物,该代码只用了前2维特征,并且将样本属于哪一类的问题变成了是不是属于setosa类的两类问题
3 %载入代码后,出现了2个变量,meas(150*4)和species(150*1)
4 data= [meas(:,1),meas(:,2)];%取鸢尾属植物中的前两维数据,鸢尾属花瓣的长度和宽度
5 groups = ismember(species,'setosa');%将sepecies中属于‘setosa’的提出到groups,groups里面就包含50个1,100个0;且前50个为1
6
7 [train,test] = crossvalind('holdOut',groups);%利用交叉验证随机分割数据集; train 和test为150*1维向量,crossvalind默认参数为0.5,即test和train各自有75个1
8
9 svmStruct = svmtrain(data(train,:),groups(train),'showplot',true);
10
11 %首先说说data(train,:),train是个150*1的logical向量,其中有75个1;data是150*2的矩阵,data(train,:)就是将data里面对应train为1的行标记提取出来,最后为75*2位数据
12 %groups(train)是标记样本为正例还是反例的一维数据,最后生成75*1的向量,有25个1,50个0;且前25个为1.
13 %最综结果:大概25个正例,50个反例。
svmtrain(training,group)
training包含训练数据的m行n列的矩阵,m代表样本的个数,n表示每个样本的维数。
group表示训练样本的标签的1维向量,通常1表示正例,0表示反例。