首先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中
第八行评估分类的性能,把评估器,分类结果和测试集的索引作为参数进行评估
第九行得出评估结果