|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
样本数据是[1 3 5 7 -----]
要预测的是[2 4 6 8 -----]
因为是实测数据,所以我先把数据进行了归一化处理。后面进行了反归一化。但是预测的效果实在是太差了,惨不忍睹啊,参数修改了好多次,还是这个样。请大牛们看看是咋回事呢?
—————————————————————————————————————————————————————————————
clc
clear
close all
A=load('data.txt') %读取所有数据
%---------------------------------------------------------
%选取1-400个数据
x=1:1:400
y=A(1:1:400)
%选取1-400,间隔为2的200个数据作为样本数据
x_train1=1:2:400
y_train1=A(1:2:400)
%选取2-400,间隔为2的200个数据作为测试数据
x_test1=2:2:400
y_test1=A(2:2:400)
%归一化
for i=1:200
y_train2(i)=(y_train1(i)-min(y_train1))/(max(y_train1)-min(y_train1));
y_test2(i)=(y_test1(i)-min(y_test1))/(max(y_test1)-min(y_test1));
end
%定义SVR 参数
global p1 ;
p1=3
ker='erbf'; % 核函数 k = exp(-(u-v)*(u-v)'/(2*p1^2))
C=100000;
e=0.0001;
loss='einsensitive';
%训练支持向量机
[nsv beta bias] = svr(x_train1',y_train2',ker,C,loss,e); % 训练样本数据。
y_test3 = svroutput(x_train1',x_test1',ker,beta,bias); % 测试样本数据
%反归一化
for i=1:200
y_test4=(max(y_test1)-min(y_test1))*y_test3+min(y_test1)
end
plot(x_test1,y_test1,'b:',x_test1,y_test4,'r-')
title('蓝色——实际数据,红色——测试数据')
grid on |
|