clear;clc;
X=xlsread('book44');
[m n]=size(X);
[B,cmaker]=xlsread('book33');
ind=crossvalind('Kfold',m,10); %采用十折交叉验证法
for i=1:10
test=(ind==i);
train=~test;
X_tr=X(train,:);
X_te=X(test,:);
Y_tr=cmaker(train,1);
Y_te=cmaker(test,1);
[gindex,groups] = grp2idx(Y_tr);
option=statset('MaxIter',80000);
s=svmtrain(X_tr,gindex,'Method','SMO', 'Kernel_Function','quadratic','options',option) ;%训练支持向量机分类器;SMO代表%使用序列最小化方法训练支持向量机的分类器;polynomial代表多项式核函数
sv_index=s.SupportVectorIndices ; %返回支持向量的标号
beta=s.Alpha; %返回分类函数的权系数
bb=s.Bias; %返回分类函数的常数项
mean_and_std_trans=s.ScaleData; %第1行返回的是已知样本点均值向量的相反数,第2行返回的是标准差向量的倒数
check=svmclassify(s,X_tr); %验证已知样本点
err_rate(1,i)=1-sum(gindex==check)/length(gindex) ;%计算已知样本点的错判率
end
AvgCorrectRate=1-mean(err_rate); %计算争取率平均值
fprintf('cp.ErrorRate = %f\n',AvgCorrectRate);
% test=xlsread('x_test');
% solution=svmclassify(s,test) %对待判样本点进行分类
十折交叉验证SVM分类器Matlab代码
1星 需积分: 48 79 浏览量
2017-05-09
00:36:27
上传
评论 11
收藏 33KB RAR 举报
评论2
最新资源