关于BP神经网络预测
关于BP时间序列预测程序中x是已知的运输量数值(2000年-2009年),以4个数据为一组,前三个数据作为输入,第四个作为输出,共分7组,前六组训练,隐层节点为7,最后一组检验:
x=[13369.2 14873.7 17137.3 17432.5 24193.5 28435.1....
33197.3 38758.6 40576.2 48606.3];
X(1,:)=(x(1,:)-min(x(1,:)))/(max(x(1,:))-min(x(1,:)));(归一化)
for i=1:7
X1(i,:)=[X(i) X(i+1) X(i+2) X(i+3)];
end
X2=(X1(:,1:3))';
T2=(X1(:,4))';
X3=X2(:,1:6);
T3=T2(:,1:6);
net=newff(minmax(X3),[7 1],{'logsig','tansig'},'trainlm');
net.trainParam.epochs=1000;
net.trainParam.goal=0.000001;
LP.lr=0.1;
net=train(net,X3,T3);
y1=sim(net,X3);
以下是检验:
x_test=X2(:,7);
y_test=sim(net,x_test)
Y_test=y_test*(max(x(1,:))-min(x(1,:)))+min(x(1,:))(反归一化)
检验效果还不错;
但运用以下命令在预测2010年运输量时,向量yc1为2007、2008、2009年运输量归一化的数值;
为什么反归一化输出和2009年数值一样,怎么回事呢???初学者盼解答??
yc1=[0.7205 0.7721 1.0000]';
jg1_test=sim(net,yc1(:,1))
Jg1_test=jg1_test*(max(x(1,:))-min(x(1,:)))+min(x(1,:))(反归一化)