数学建模社区-数学中国

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

作者: hanyunxiang    时间: 2010-5-25 17:00
标题: 关于BP神经网络预测
本帖最后由 hanyunxiang 于 2010-5-25 17:03 编辑
/ [' z0 l2 E- Z5 a+ l9 p
& c$ h* V! l* s" s, V1 g* h7 Q5 G8 Z关于BP神经网络预测
  Q  i; f7 T: ]% |! d
# N! r% N- C* [* G" H( }% a4 V注:里面的笑脸代表冒号(不知道会出现笑脸)
* J* D4 i" r8 w
: h' C! d; |/ e3 D
( H) ]4 ], C# V* n. Y4 o* v关于BP时间序列预测
. T- a  K( Z3 b2 B程序中x是已知的运输量数值(2000年-2009年),以4个数据为一组,前三个数据作为输入,第四个作为输出,共分7组,前六组训练,隐层节点为7,最后一组检验:( X4 t+ |1 a; m# S/ `
x=[13369.2 14873.7 17137.3 17432.5 24193.5 28435.1....
5 x* H# I* z& o9 n" u    33197.3 38758.6 40576.2 48606.3];0 `# N4 R3 J" n0 O
X(1,=(x(1,-min(x(1,))/(max(x(1,)-min(x(1,));(归一化), }* d: p( r6 J5 g5 F$ a% b. @
for i=1:74 G( Z2 g1 @* G: A0 X% N
    X1(i,=[X(i) X(i+1) X(i+2) X(i+3)];
; @2 r  Z5 J( @3 Nend
0 C) b7 J- f! g: xX2=(X1(:,1:3))';; g0 \/ Y0 R" c5 W
T2=(X1(:,4))';
# ^) v9 ~' }- OX3=X2(:,1:6);
: f$ }  o, s( Q8 Y# hT3=T2(:,1:6);
8 d; ^6 L0 j% n+ ?, Anet=newff(minmax(X3),[7 1],{'logsig','tansig'},'trainlm');
# J+ \6 N- `9 F9 ~; H* inet.trainParam.epochs=1000;
+ C& |! d( N. J) |net.trainParam.goal=0.000001;$ A% F6 `7 F  E5 b  R( W" W  e
LP.lr=0.1;* g/ v9 u! E% h
net=train(net,X3,T3);
2 O, ^+ s9 w2 r' my1=sim(net,X3);
. Q* K* n& ^+ O5 z! W" |, N6 o- i8 _
  `/ g, j! I/ v: ~0 q以下是检验:
, F* N9 j2 ^/ @. y) ]9 `6 S! X
& J* W4 G; C8 W* n% a. ?  Hx_test=X2(:,7);
2 ~. a: _; T: ]& w7 F0 Xy_test=sim(net,x_test)
  O. {6 l- |3 ]* X, dY_test=y_test*(max(x(1,)-min(x(1,))+min(x(1,)(反归一化)
8 M0 X) e) }9 c- [9 _检验效果还不错;  Q& D, k7 \+ m: W; C

. x7 ]* L8 v4 F6 Y但运用以下命令在预测2010年运输量时,向量yc1为2007、2008、2009年运输量归一化的数值;
7 M4 B( _, z6 f1 R) @0 h% G0 I! n为什么反归一化输出和2009年数值一样,怎么回事呢???初学者盼解答??: W. n! x  p( A4 @# _: J

2 v2 Y( r6 \+ O0 o, _# P9 }2 {yc1=[0.7205 0.7721 1.0000]';
) b) E( {9 N0 j6 g8 a: fjg1_test=sim(net,yc1(:,1))
; F$ T# B5 h, }! F; bJg1_test=jg1_test*(max(x(1,)-min(x(1,))+min(x(1,)(反归一化)' O- `$ c. Q( T1 _" s( e1 W0 Y2 c

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