数学建模社区-数学中国

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

作者: hanyunxiang    时间: 2010-5-25 17:00
标题: 关于BP神经网络预测
本帖最后由 hanyunxiang 于 2010-5-25 17:03 编辑 - O! I( v' S; d& O$ T5 c

% E0 Y( b0 F3 j% l% h7 R关于BP神经网络预测5 ^+ e& V' S7 h0 E) `5 y( \* U
; @% r$ Y0 B( @4 s+ O- H
注:里面的笑脸代表冒号(不知道会出现笑脸)) P- G2 _$ F3 @1 d! ^

% _; v  R6 t6 X' h- H& M4 ]
. C: V6 W  F% v4 g9 i关于BP时间序列预测% M* x7 ^: E! g! r
程序中x是已知的运输量数值(2000年-2009年),以4个数据为一组,前三个数据作为输入,第四个作为输出,共分7组,前六组训练,隐层节点为7,最后一组检验:/ \" O0 h# c# v2 u
x=[13369.2 14873.7 17137.3 17432.5 24193.5 28435.1....
( s. a0 t, U" L+ r1 b, \    33197.3 38758.6 40576.2 48606.3];
* A& S+ u" B+ Y* @/ ]$ z/ Q8 \5 CX(1,=(x(1,-min(x(1,))/(max(x(1,)-min(x(1,));(归一化)  O4 d3 X* c( o3 l/ K, R6 Z9 B/ E
for i=1:7
' W: X+ p1 T# B7 u. d5 {# A    X1(i,=[X(i) X(i+1) X(i+2) X(i+3)];
6 |6 ^+ Q5 H2 @0 P. q2 \/ y8 B+ v! \3 Jend
( b6 r4 T" @, R7 m+ F' ?' NX2=(X1(:,1:3))';
( W- ^0 Q3 [& c  p. bT2=(X1(:,4))';: E+ c+ p! e! z; j9 S8 t
X3=X2(:,1:6);
4 C8 O7 X7 l- F; dT3=T2(:,1:6);
5 i- |% e. r' P( Fnet=newff(minmax(X3),[7 1],{'logsig','tansig'},'trainlm');2 v  M( T/ U; p& c
net.trainParam.epochs=1000;
$ j; e2 Q/ ?# n" }( ~net.trainParam.goal=0.000001;! U; ]( p+ j  K+ I7 h& B
LP.lr=0.1;7 J6 p$ [  _% F( G  t$ ~8 a
net=train(net,X3,T3);
' o- y, t6 S# U0 Ky1=sim(net,X3);
6 t; M5 M& _! G$ b# h
/ P2 j9 D  W, M) i以下是检验:
3 q0 E- G. o% s$ G! D
$ L( Q( ]! g/ v& ?/ |x_test=X2(:,7);+ a2 R9 a8 R; t- Z# z2 V, o
y_test=sim(net,x_test)! J) M( g! l! E$ l! e& e$ d
Y_test=y_test*(max(x(1,)-min(x(1,))+min(x(1,)(反归一化)
' s. C* a- ~. P7 E检验效果还不错;. `' ~7 V5 L! Z4 O

2 ^: ?  M1 {$ v但运用以下命令在预测2010年运输量时,向量yc1为2007、2008、2009年运输量归一化的数值;9 u8 a* }& _4 C* Z1 N( G
为什么反归一化输出和2009年数值一样,怎么回事呢???初学者盼解答??* R4 V5 A% T( k/ p3 l' H: H1 Q3 {

$ O" i* f2 L- L% \5 uyc1=[0.7205 0.7721 1.0000]';, W$ N* N, `5 {; G( |, a1 B
jg1_test=sim(net,yc1(:,1)), ?' j5 K* ]2 `* k+ z. S5 `& r
Jg1_test=jg1_test*(max(x(1,)-min(x(1,))+min(x(1,)(反归一化)+ A: G+ Y5 m: R. `

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