- 在线时间
- 0 小时
- 最后登录
- 2009-9-12
- 注册时间
- 2009-8-31
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 82 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 27
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   23.16% 该用户从未签到
 |
神经网络预测
. s( O4 w" l( R; N3 R% v% 数据为1986年到2000年的交通量 ,网络为3输入,1输出
8 \$ j P6 `" n" U% j% 15组数据,其中9组为正常训练数据,3组为变量数据,3组为测试数据) {( N! u& C- J- D
%by akjuan
Z9 v. C D2 z0 Y%all rights preserved by www.4math.cn; _4 Y6 N7 G4 t5 _
All_error=[];%所有误差存储! ^! J4 W. C" @ A/ S3 P$ }0 q
year=1986:2000;%数据是从1986到2000年的
$ m% R' j1 R( ^p=[493 372 445;372 445 176;445 176 235;176 235 378;235 378 429;...
/ ?& P x/ e$ S; N. U7 ?; s% Y 378 429 561;429 561 651;561 651 467;651 467 527;467 527 668;...
# R V8 e/ z: @& V3 X/ R 527 668 841; 668 841 526;841 526 480;526 480 567;480 567 685]';%输入数据,共15组,每组3个输入
5 U' G7 A' u& D, C- \, u9 C C bt=[176 235 378 429 561 651 467 527 668 841 526 480 567 685 507];%输出数据,共15组,每组1个输出
5 J: {7 c$ u2 ]1 o2 l[normInput,ps] = mapminmax(p);: i0 z* U# S1 k/ v7 e/ r
[normTarget,ts] = mapminmax(t);
8 j b ^5 @: G: W; JtestPercent = 0.20; % Adjust as desired$ p% h. I- j1 h C* J8 y
validatePercent = 0.20; % Adust as desired
& ]! l; F5 C2 W$ l0 [4 f6 I( K! z[trainSamples,validateSamples,testSamples] = dividevec(normInput,normTarget,validatePercent,testPercent);5 V, d8 L7 g* w3 h+ P
for j=1:200
: c% ~+ Z) m' _8 i" hNodeNum1 = 20; % 隐层第一层节点数% ~0 ~/ |0 f3 E Y, `! F5 K2 O
NodeNum2=40; % 隐层第二层节点数
% W" v( E' B) v6 hTypeNum = 1; % 输出维数) H# y3 J9 d" m4 Z r7 s5 K' c
TF1 = 'tansig';TF2 = 'tansig'; TF3 = 'tansig';
0 z2 W+ x3 |/ Jnet=newff(minmax(normInput),[NodeNum1,NodeNum2,TypeNum],{TF1 TF2 TF3},'traingdx');%网络创建net.trainParam.epochs=10000;%训练次数设置# G( H, Q+ X1 j* w* Y
net.trainParam.goal=1e-6;%训练目标设置
, u% J' h7 x- P& h5 K; [+ _PL.lr=0.01;net.trainfcn='traingdm';; Y! _# B2 _ L' m
[net,tr] = train(net,trainSamples.P,trainSamples.T,[],[],validateSamples,testSamples);1 j( x) M* H/ {2 `2 F& h
[normTrainOutput,Pf,Af,E,trainPerf] = sim(net,trainSamples.P,[],[],trainSamples.T);%正常输入的9组p数据,BP得到的结果t
5 X6 P' p) a$ O! B7 E) h6 C[normValidateOutput,Pf,Af,E,validatePerf] = sim(net,validateSamples.P,[],[],validateSamples.T);%用作变量3的数据p,BP得到的结果t) a* L0 y# z4 X# e% w! \7 L* ?/ X
[normTestOutput,Pf,Af,E,testPerf] = sim(net,testSamples.P,[],[],testSamples.T);%用作测试的3组数据p,BP得到的结果t! S S b3 i0 v1 ?/ c* Y4 A
trainOutput = mapminmax('reverse',normTrainOutput,ts);%正常输入的9组p数据,BP得到的归一化后的结果t3 b2 X# k) `' {) ^* q9 S1 }
trainInsect = mapminmax('reverse',trainSamples.T,ts);%正常输入的9组数据t; [# Q% p" @/ \8 f+ o
validateOutput = mapminmax('reverse',normValidateOutput,ts);%用作变量3的数据p,BP得到的归一化的结果t
_( F/ ]: U& ], j9 OvalidateInsect = mapminmax('reverse',validateSamples.T,ts);%用作变量3的数据t
" B ?& k6 w) _# itestOutput = mapminmax('reverse',normTestOutput,ts);%用作变量3组数据p,BP得到的归一化的结果t- T K: S. H0 k- y
testInsect = mapminmax('reverse',testSamples.T,ts);%用作变量3组数据t
6 e: W. Q" Q1 r8 X& {%绝对误差计算 @: h6 e- j7 _* Z! u8 a5 z
absTrainError = trainOutput-trainInsect;
5 ~4 K# D* k) eabsTestError = testOutput-testInsect;
) w- R, `, c3 n" ?error_sum=sqrt(absTestError(1).^2+absTestError(2).^2+absTestError(3).^2);
& @& f2 v1 X3 }: z) RAll_error=[All_error error_sum]; ]4 [6 f+ W m2 D
eps=90;%其为3组测试数据的标准差,或者每个数据偏差在一定范围内而判别
. R4 b( _9 h* N4 T8 j5 l( sif ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps)) p) Z7 R9 I3 s
save mynetdata net
4 x1 C' M$ h# ~ H9 F, e break
8 M+ E% u, w1 n1 Cend
$ q) G8 N( `' R/ W( w/ Z* y( Uj
: \ h3 k# R6 M6 r7 O/ i: Wend8 r `8 A& g R+ W& R- D
问题是:
' j d/ {$ M. y. _' M; n( @/ `0 Z/ lif ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps))
9 S; ?( Y3 T O中的30是怎么算出来的啊 |
zan
|