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表示反例。