MATLAB改进svm,SVM回归准确率太低,谁给说说从哪改进

今天用一组震动数据试着用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 编辑]