数学建模社区-数学中国
标题:
关于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:7
4 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 N
end
0 C) b7 J- f! g: x
X2=(X1(:,1:3))';
; g0 \/ Y0 R" c5 W
T2=(X1(:,4))';
# ^) v9 ~' }- O
X3=X2(:,1:6);
: f$ } o, s( Q8 Y# h
T3=T2(:,1:6);
8 d; ^6 L0 j% n+ ?, A
net=newff(minmax(X3),[7 1],{'logsig','tansig'},'trainlm');
# J+ \6 N- `9 F9 ~; H* i
net.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' m
y1=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. ? H
x_test=X2(:,7);
2 ~. a: _; T: ]& w7 F0 X
y_test=sim(net,x_test)
O. {6 l- |3 ]* X, d
Y_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: f
jg1_test=sim(net,yc1(:,1))
; F$ T# B5 h, }! F; b
Jg1_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 you
1030226479888439
作者:
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