|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
最近弄一个BP程序,训练误差还可以,但是预测时候误差很大,布置是训练样本不好,还是算法选的不对。另外,预测样本进行归一化和反归一化的时候,我有点不确定,该怎么弄呢?请高手帮忙!拜托!
程序及数据样本在附件里面。
clear
PP=load('pp.txt');
WW=load('ww.txt');
P=PP';
W=WW';
for i=1:4
P0(i,:)=(P(i,:)-min(P(i,:)))/(max(P(i,:))-min(P(i,:)));
end
for i=1
W0(i,:)=(W(i,:)-min(W(i,:)))/(max(W(i,:))-min(W(i,:)));
end
net=newff(minmax(P0),[4,7,1],{'tansig','tansig','purelin'},'traingda');
net.trainparam.show=50;%训练误差一次显示最大间隔步数
net.trainparam.lr=0.05;%学习率
net.trainparam.lr_inc=1.05;
net.trainparam.epochs=20000;%最大训练步数
net.trainparam.goal=0.0001;%网络误差
net=init(net);
[net,tr]=train(net,P0,W0);
W
A=sim(net,P0);%求原始数据的拟合数据
for i=1
Y(i,:)=(max(W(i,:))-min(W(i,:)))*A(i,:)+min(W(i,:));
end
Y
E=W-Y%求拟合误差
T1=1:1:15;
figure;
plot(T1,W,'b',T1,Y,'r',T1,E,'g');
XX=load('xx.txt');%存放输入、输出样本数据X、T
TT=load('tt.txt');
X=XX';
T=TT';
%这样归一化和反归一化对么?
for i=1:4
X0(i,:)=(X(i,:)-min(X(i,:)))/(max(X(i,:))-min(X(i,:)));
end
for i=1
T0(i,:)=(T(i,:)-min(T(i,:)))/(max(T(i,:))-min(T(i,:)));
end
T
AA=sim(net,X0);%求预测数据的拟合数据
for i=1
YY(i,:)=(max(T(i,:))-min(T(i,:)))*AA(i,:)+min(T(i,:));
end
YY
E=T-YY
for j=1:9
EE(1,j)=E(1,j)/T(1,j);
end
EE
T1=1:1:9;
figure;
plot(T1,T,'b',T1,YY,'r',T1,EE,'g');
[ 本帖最后由 Lillian 于 2009-4-12 15:29 编辑 ] |
|