数学建模社区-数学中国

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

作者: hanyunxiang    时间: 2010-5-25 17:00
标题: 关于BP神经网络预测
本帖最后由 hanyunxiang 于 2010-5-25 17:03 编辑 6 \- f: @, |4 X- \( i1 b+ V. U
6 r7 j+ }# `: r  b1 Z+ L! C
关于BP神经网络预测' q3 `  y6 F  F! d, v  s( c: N% J
! j# r2 N$ y% m# {6 l0 N
注:里面的笑脸代表冒号(不知道会出现笑脸). F& q0 p4 c$ g" O
5 ]* p! |, P2 T! A
; b6 }( E' n7 e: y  w% z
关于BP时间序列预测
$ S+ X# p- T* S( I) J程序中x是已知的运输量数值(2000年-2009年),以4个数据为一组,前三个数据作为输入,第四个作为输出,共分7组,前六组训练,隐层节点为7,最后一组检验:
1 N5 X# h+ o4 O6 m" @x=[13369.2 14873.7 17137.3 17432.5 24193.5 28435.1....
* A' L+ K! r$ I) T    33197.3 38758.6 40576.2 48606.3];) s$ d$ m! T- [1 i
X(1,=(x(1,-min(x(1,))/(max(x(1,)-min(x(1,));(归一化)( Y( y" n# g% m: f/ I0 o
for i=1:7% `" n6 K1 k8 a! v. q5 y2 g3 x
    X1(i,=[X(i) X(i+1) X(i+2) X(i+3)];
9 [: {/ o$ G  [8 _5 Fend8 I9 \( U1 t; t. [7 ?  ?5 V9 P
X2=(X1(:,1:3))';- ~; s' a* s$ Q
T2=(X1(:,4))';
) b8 u7 f  N  [5 ?. P3 mX3=X2(:,1:6);  t$ o/ G2 \, q3 f, J
T3=T2(:,1:6);
% g; M4 k& W+ H  L9 {- Mnet=newff(minmax(X3),[7 1],{'logsig','tansig'},'trainlm');
0 i  b5 b3 W+ Y! {; _! E+ Fnet.trainParam.epochs=1000;5 q) O3 G1 E5 p( i# E% i
net.trainParam.goal=0.000001;
* Z+ m7 C7 E/ `$ vLP.lr=0.1;
  T3 y0 }5 N* T. Z- J5 anet=train(net,X3,T3);
1 c8 o% d* y1 c5 U1 i. T. by1=sim(net,X3);4 B4 {0 _/ |  d- ]

' X8 B, p/ y! T8 ~! D- G$ B$ S以下是检验:* T9 c/ \# @3 m7 o

; Z6 s) ^2 c0 ?& b( v% Ax_test=X2(:,7);% }2 L) S, M& g' ]8 Z& l! t8 v
y_test=sim(net,x_test); a0 x- E! x# M. ~9 I
Y_test=y_test*(max(x(1,)-min(x(1,))+min(x(1,)(反归一化)
2 V1 }* _6 g- l# R9 H检验效果还不错;
6 t5 K, x! G8 H$ [6 S; u* W: A/ Y4 |8 j- l1 W5 H
但运用以下命令在预测2010年运输量时,向量yc1为2007、2008、2009年运输量归一化的数值;
" v# r" ?% a8 C8 y+ r为什么反归一化输出和2009年数值一样,怎么回事呢???初学者盼解答??# a& @/ x# Z  R, Q( N, x8 y

3 J& R8 j3 L! L6 d9 w5 Eyc1=[0.7205 0.7721 1.0000]';
* d$ C& v' ]- g1 |( Fjg1_test=sim(net,yc1(:,1))4 ~% {* F" r2 s
Jg1_test=jg1_test*(max(x(1,)-min(x(1,))+min(x(1,)(反归一化)' B9 f5 G4 K6 k, x& _

作者: 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