首先svm是用來做分類的,是一種有監督的分類器.
什么是有監督的呢?就是說在你給我一個數據集讓我做分類之前.我已經有一些經驗數據了.即要先進行學習,再進行分類.
這里就有了訓練集和測試集.先用訓練集來訓練分類器.然后把測試數據輸入分類器讓分類器來進行分類.
具體的svm分類器的原理在此不作討論.
這里我有下載http://wenku.baidu.com/view/5be71ecc0508763231121257.html來理解svm是怎么操作的.其代碼為
1 load fisheriris 2 data = [meas(:,1), meas(:,2)]; 3 groups = ismember(species,'setosa'); 4 [train, test] = crossvalind('holdOut',groups); 5 cp = classperf(groups); 6 svmStruct = svmtrain(data(train,:),groups(train),'showplot',true); 7 classes = svmclassify(svmStruct,data(test,:),'showplot',true); 8 classperf(cp,classes,test); 9 cp.CorrectRate
第一行是讀入matlab數據集
第二行是僅分析2列,對根據這2列的數據進行分類
第三行是生成組號.原有的組名是setosa,versicolor,virginica.這里進行分類是分成2類,是setosa(組號為1)以及非setosa(組號為0)
第四行是生成交叉檢驗的數據.即決定哪一些行作為測試集,哪一些行作為訓練集.其中train中為1的元素表示訓練集,test中為1的元素表示測試集
第五行是生成了一個評估分類結果的對象
第六行使用訓練集的數據生成svm分類器
第七行使用這個分類器對測試集的數據進行分類.結果放在classes中
第八行評估分類的性能,把評估器,分類結果和測試集的索引作為參數進行評估
第九行得出評估結果