下面是一个调用SVM分类的一个实例,这个例子svmtrain没有传参数。我现在要用粒子群算法优化支持向量机的参数,请哪位大神告诉我怎么调用svmtrain函数的语法怎么写,将优化的参数传进去? 谢谢各位大神!!!!!!!!
============================实例研究====================
load fisheriris
%载入matlab自带的数据[有关数据的信息可以自己到UCI查找,这是UCI的经典数据之一],得到的数据如下图:
其中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);
cp = classperf(groups);
%随机选择训练集合测试集[有关crossvalind的使用请自己help一下]
其中cp作用是后来用来评价分类器的.
svmStruct = svmtrain(data(train,:),groups(train),'showplot',true);
%使用svmtrain进行训练,得到训练后的结构svmStruct,在预测时使用.
classes = svmclassify(svmStruct,data(test,:),'showplot',true);
%对于未知的测试集进行分类预测,结果如图:
tu3
3.jpg (37.34 KB)
2009-5-12 19:50
classperf(cp,classes,test);
cp.CorrectRate
ans =
0.9867
============================实例研究====================
load fisheriris
%载入matlab自带的数据[有关数据的信息可以自己到UCI查找,这是UCI的经典数据之一],得到的数据如下图:
其中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);
cp = classperf(groups);
%随机选择训练集合测试集[有关crossvalind的使用请自己help一下]
其中cp作用是后来用来评价分类器的.
svmStruct = svmtrain(data(train,:),groups(train),'showplot',true);
%使用svmtrain进行训练,得到训练后的结构svmStruct,在预测时使用.
classes = svmclassify(svmStruct,data(test,:),'showplot',true);
%对于未知的测试集进行分类预测,结果如图:
tu3
3.jpg (37.34 KB)
2009-5-12 19:50
classperf(cp,classes,test);
cp.CorrectRate
ans =
0.9867