- 在线时间
- 0 小时
- 最后登录
- 2009-9-12
- 注册时间
- 2009-8-31
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 82 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 27
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   23.16% 该用户从未签到
 |
神经网络预测 H) R3 O1 k+ f# ~' k/ {" N: t$ G
% 数据为1986年到2000年的交通量 ,网络为3输入,1输出* I! \: _5 v5 p
% 15组数据,其中9组为正常训练数据,3组为变量数据,3组为测试数据
) T: x9 B3 b/ Z2 b8 P%by akjuan
/ q9 \; r: Y( m% z7 A%all rights preserved by www.4math.cn
0 a% ?& s3 R( B3 N4 A$ X- ~( ]All_error=[];%所有误差存储1 Q* A' x4 N! H! R% o
year=1986:2000;%数据是从1986到2000年的
8 ]: E; t5 _) ]4 [6 W1 @$ k. Q8 Vp=[493 372 445;372 445 176;445 176 235;176 235 378;235 378 429;...# F, u0 X6 O0 ?1 N
378 429 561;429 561 651;561 651 467;651 467 527;467 527 668;...
0 D5 h" L# y" ^+ T& u( @- k& T 527 668 841; 668 841 526;841 526 480;526 480 567;480 567 685]';%输入数据,共15组,每组3个输入9 z G. k" U1 R1 l
t=[176 235 378 429 561 651 467 527 668 841 526 480 567 685 507];%输出数据,共15组,每组1个输出
$ y3 k7 F1 W; K( a5 `[normInput,ps] = mapminmax(p);: S5 X1 P# P/ |, u |6 g4 O" x
[normTarget,ts] = mapminmax(t);
9 Y* X1 ?1 q. utestPercent = 0.20; % Adjust as desired
: t+ Y2 |3 \1 |" {2 i* d3 I" ZvalidatePercent = 0.20; % Adust as desired
+ m$ ?3 N) ~5 T) f9 P" }% G[trainSamples,validateSamples,testSamples] = dividevec(normInput,normTarget,validatePercent,testPercent);
( M4 i! |) ~# I: _for j=1:200; y1 O' F. H3 Y- g; {
NodeNum1 = 20; % 隐层第一层节点数
: Z" m& g' Y+ }NodeNum2=40; % 隐层第二层节点数
$ O6 ^3 l M% B1 @; M6 l* Z5 gTypeNum = 1; % 输出维数4 p k0 j% |4 n# p, m/ K( l+ c
TF1 = 'tansig';TF2 = 'tansig'; TF3 = 'tansig';
, ?8 J$ E9 o- E( [. ]* unet=newff(minmax(normInput),[NodeNum1,NodeNum2,TypeNum],{TF1 TF2 TF3},'traingdx');%网络创建net.trainParam.epochs=10000;%训练次数设置7 r& q* ^: g5 B5 i0 j6 p
net.trainParam.goal=1e-6;%训练目标设置
' Q% t5 a4 B/ ], ]- q1 ZPL.lr=0.01;net.trainfcn='traingdm';; l v' n8 ^3 n5 b- K
[net,tr] = train(net,trainSamples.P,trainSamples.T,[],[],validateSamples,testSamples);# g) |" [3 R/ }& Z1 j
[normTrainOutput,Pf,Af,E,trainPerf] = sim(net,trainSamples.P,[],[],trainSamples.T);%正常输入的9组p数据,BP得到的结果t8 O# g1 [7 ]" `5 b
[normValidateOutput,Pf,Af,E,validatePerf] = sim(net,validateSamples.P,[],[],validateSamples.T);%用作变量3的数据p,BP得到的结果t5 Y2 n5 q4 R" t: P* z% S( l% ?
[normTestOutput,Pf,Af,E,testPerf] = sim(net,testSamples.P,[],[],testSamples.T);%用作测试的3组数据p,BP得到的结果t. p1 P5 b/ [; {$ n
trainOutput = mapminmax('reverse',normTrainOutput,ts);%正常输入的9组p数据,BP得到的归一化后的结果t
; z: `. ]7 Z7 b: Z! _; B% ?trainInsect = mapminmax('reverse',trainSamples.T,ts);%正常输入的9组数据t
1 i4 e5 s% r5 RvalidateOutput = mapminmax('reverse',normValidateOutput,ts);%用作变量3的数据p,BP得到的归一化的结果t7 U/ Y k% {8 q5 j
validateInsect = mapminmax('reverse',validateSamples.T,ts);%用作变量3的数据t- Z$ L3 f& k/ X$ P# ?
testOutput = mapminmax('reverse',normTestOutput,ts);%用作变量3组数据p,BP得到的归一化的结果t
# {4 ]8 b' u1 AtestInsect = mapminmax('reverse',testSamples.T,ts);%用作变量3组数据t2 D& p+ U; B; }% J3 H+ d! r
%绝对误差计算
2 U/ B+ \) p0 V' P b0 l7 u% v3 g4 LabsTrainError = trainOutput-trainInsect;# [. P1 Z. R- Z, [- O. ?2 O$ [* ?
absTestError = testOutput-testInsect;7 O' X" ?& O6 v. V7 Z) t; a, l
error_sum=sqrt(absTestError(1).^2+absTestError(2).^2+absTestError(3).^2);
2 O" A; A C0 t3 H; ^All_error=[All_error error_sum];4 w' v; D) s, }& W
eps=90;%其为3组测试数据的标准差,或者每个数据偏差在一定范围内而判别& s4 {9 W* d+ l) [; i3 \
if ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps))5 l( ?7 \! F# e& v6 W+ p6 `
save mynetdata net
$ P2 O& s, z1 `1 e break
1 I/ D+ L; H% z' ~4 w/ pend8 I% D( Z2 D% @! O. |
j
" J! y- @( j; _; y6 a6 ^end# @- W+ J% I+ a! g/ z, D( }
问题是:# d5 y* E# L0 M: I+ N
if ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps))' w( V$ z3 n6 {' w
中的30是怎么算出来的啊 |
zan
|