今天用一组震动数据试着用SVM做了下回归,但不论怎么改效果都不好,希望大家给点改进意见
程序:
clc;clear;close all;
%载入数据
load y;
load x;
% 找最优参数
bestc = 0;bestg = 0;bestmse= 0;
[bestmse,bestc,bestg] = SVMcgForRegress(y ,x ,-10, 10, -10, 10, 3);
%打印粗略选择结果:
disp('打印粗略选择结果');
str= sprintf('Best Cross Validation MSE = %g Best c = %g Best g = %g', bestmse, bestc, bestg);
disp(str);
%根据粗略选择的结果图进行精细选择:
[bestmse,bestc,bestg] = SVMcgForRegress(y ,x ,-4, 4, -4, 4, 3, 0.5, 0.5, 0.05);
%打印粗略选择结果:
disp('打印精细选择结果');
str= sprintf('Best Cross Validation MSE = %g Best c = %g Best g = %g', bestmse, bestc, bestg);
disp(str);
%利用回归预测分析最佳的参数进行SVM网络训练
cmd = ['-c', num2str(bestc), '-g', num2str(bestg), '-s 3 -p 0.01'];
%建立回归模型
model = svmtrain(y, x, cmd);
[py, mse] = svmpredict(y, x, model);
figure;plot(x, y, '-o');
hold on;
plot(x, py, 'r');
axis([1, 268, 0, 12]);
legend('原始数据', '回归数据');
grid on;
原始数据在处理前的准确率才20%多,用smooth函数预处理后就更低了,不知道是什么原因。希望大家帮忙指正(个人感觉c和g选的不合适)
[本帖最后由 SFWS123 于 2011-10-8 22:06 编辑]