用svm做分类问题,大约120个数据,每个数据6个属性(指标),用其中90个来训练模型,另外30个测试;用默认参数做出的accuracy=30%,于是参数寻优想找出最佳的c和g,借鉴了<MATLAB神经网络30个案例分析_全书>里面的一段程序(label和data在之前已经输入了数据并做过归一化处理),
bestcv=0;bestc=0;bestg=0
for log2c=-5:5,
for log2g=-5:5,
cmd=['-v 5 -c',num2str(2^log2c),'-g',num2str(2^log2g)];
cv=svmtrain(label,data,cmd);
if(cv>bestcv),
bestcv=cv;bestc=2^log2c;bestg=2^log2g;
end
fprintf('%g%g%g(bestc=%g,g=%g,rate=%g)\n',bestc,bestg,bestcv);
end
end
cmd=['-c',num2str(bestc),'-g',num2str(bestg)];
model=svmtrain(label,data,cmd);
[predict_label,accuracy,decision_values]=svmpredict(testdatalabel,testdata,model);
predict_label
最后输出显示错误model file should be a struct array,
后来查资料得知交叉检验返回的model将不是一个结构体,会是准确率,于是将最后四行程序先抹掉在运行,但是仍然不能输出c和g结果,输出的是一些内置的对参数概念的英文解释吧,用matlab和libsvm还没几天,卡住在这里了,求指教。。
bestcv=0;bestc=0;bestg=0
for log2c=-5:5,
for log2g=-5:5,
cmd=['-v 5 -c',num2str(2^log2c),'-g',num2str(2^log2g)];
cv=svmtrain(label,data,cmd);
if(cv>bestcv),
bestcv=cv;bestc=2^log2c;bestg=2^log2g;
end
fprintf('%g%g%g(bestc=%g,g=%g,rate=%g)\n',bestc,bestg,bestcv);
end
end
cmd=['-c',num2str(bestc),'-g',num2str(bestg)];
model=svmtrain(label,data,cmd);
[predict_label,accuracy,decision_values]=svmpredict(testdatalabel,testdata,model);
predict_label
最后输出显示错误model file should be a struct array,
后来查资料得知交叉检验返回的model将不是一个结构体,会是准确率,于是将最后四行程序先抹掉在运行,但是仍然不能输出c和g结果,输出的是一些内置的对参数概念的英文解释吧,用matlab和libsvm还没几天,卡住在这里了,求指教。。