数学建模社区-数学中国

标题: 关于BP神经网络预测 [打印本页]

作者: hanyunxiang    时间: 2010-5-25 17:00
标题: 关于BP神经网络预测
本帖最后由 hanyunxiang 于 2010-5-25 17:03 编辑
1 b" [7 k  v- \) H) m) T' l& d( X1 k/ N
关于BP神经网络预测5 E( @, @" f0 n2 C0 C1 ?9 }, e5 Q

2 N0 E. |$ ]6 V注:里面的笑脸代表冒号(不知道会出现笑脸); ~! K/ A) u  A. b. ?, `
4 y/ i" U% \, f& e* S: T) e
6 W6 ]  e0 f  i+ s& U4 |" }5 U
关于BP时间序列预测
1 g- B2 I6 O' `' ^' B程序中x是已知的运输量数值(2000年-2009年),以4个数据为一组,前三个数据作为输入,第四个作为输出,共分7组,前六组训练,隐层节点为7,最后一组检验:
/ f6 L# N$ b- V4 J( N/ G0 B( \; px=[13369.2 14873.7 17137.3 17432.5 24193.5 28435.1....8 E! u. H! m3 W0 R# b" U  }2 m& O0 `
    33197.3 38758.6 40576.2 48606.3];$ [: E9 a' ?. y0 ]6 ^
X(1,=(x(1,-min(x(1,))/(max(x(1,)-min(x(1,));(归一化)- k0 T8 a. N4 f% s7 r
for i=1:78 q9 k5 M( b/ Y
    X1(i,=[X(i) X(i+1) X(i+2) X(i+3)];, ~0 d7 C! Z$ g0 u
end, R0 V; C5 l1 y  L7 I% N  X' h3 G# |
X2=(X1(:,1:3))';
, Q7 N0 F  f+ E, z! U" @& lT2=(X1(:,4))';
8 }, y9 M- }. H, `0 _X3=X2(:,1:6);4 r, ]" O6 d2 y* P2 l! [$ U- H
T3=T2(:,1:6);0 J. g0 Q$ m1 C7 |8 i
net=newff(minmax(X3),[7 1],{'logsig','tansig'},'trainlm');
5 r9 e; ^% J9 c7 jnet.trainParam.epochs=1000;
' ?/ @) e4 b" }9 R- E* Enet.trainParam.goal=0.000001;7 J2 `+ [, s  j$ i' Q/ Q+ }  n- L
LP.lr=0.1;3 @1 a6 e7 _0 `% \; V! S
net=train(net,X3,T3);) j4 ?! I0 n) }" x  s% h0 E+ F* T- L
y1=sim(net,X3);$ |1 u$ y" l5 c6 p( c9 r" K

1 @: f* F8 j* t. I以下是检验:% I6 i8 P6 U2 J2 Q8 P+ W, B

+ P3 K4 n) M& V: v$ ux_test=X2(:,7);
6 E1 r% n, W: ?2 xy_test=sim(net,x_test)4 A- l! m  F! r3 q& ^
Y_test=y_test*(max(x(1,)-min(x(1,))+min(x(1,)(反归一化)
$ }! f/ z0 l* N检验效果还不错;
: t- S9 X# v/ M. [( s2 p" A4 H- u: d, D& o
但运用以下命令在预测2010年运输量时,向量yc1为2007、2008、2009年运输量归一化的数值;
3 z" z1 R- T  @$ I" P6 Y为什么反归一化输出和2009年数值一样,怎么回事呢???初学者盼解答??
6 g2 \; T+ Z9 `7 Q7 o% }: f
2 t1 {8 G% O7 I2 F* [( s) q& Q9 F+ @yc1=[0.7205 0.7721 1.0000]';
; R9 q7 e' v# A8 i* Vjg1_test=sim(net,yc1(:,1))& a9 o, p' f1 y, }$ B2 Z- C
Jg1_test=jg1_test*(max(x(1,)-min(x(1,))+min(x(1,)(反归一化)
2 @4 \$ w+ r+ o3 G1 }" w# z! ^" j

作者: zerodingying    时间: 2012-2-4 15:41
感谢楼主,很不错的说。。。。。
作者: alair002    时间: 2012-2-5 18:42
好贴,顶起,慢慢看,thank you1030226479888439
作者: haoren1990    时间: 2012-3-6 10:32
y1=sim(net,X3);
作者: haoren1990    时间: 2012-3-6 10:36
X3不是你的训练数据吗,前面的网络是根据X3和目标输出来训练的,结果你又把X3作为最后的网络输出,结果肯定是目标输出啊(已知的2009的值)与归不归一没有关系。
作者: 沙漠海滩    时间: 2012-3-6 22:07
这是什么啊?楼主
作者: KuaitouKid    时间: 2012-3-14 02:15
改改参数应该就不一样了,神经网络的结果就是有点蛋疼……
作者: 1578233196    时间: 2013-8-9 14:27

作者: 1578233196    时间: 2013-8-9 14:27

作者: 1578233196    时间: 2013-8-9 14:27

作者: 1578233196    时间: 2013-8-9 14:27





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5