- 在线时间
- 0 小时
- 最后登录
- 2009-9-12
- 注册时间
- 2009-8-31
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 82 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 27
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   23.16% 该用户从未签到
 |
神经网络预测# P& k# v! u) @5 i/ G9 F
% 数据为1986年到2000年的交通量 ,网络为3输入,1输出 ~. t4 [: Q1 k- E1 Q& o: R
% 15组数据,其中9组为正常训练数据,3组为变量数据,3组为测试数据7 e( c- v/ g `
%by akjuan
. n/ e/ A% \+ S: l/ q. h9 Z# g5 z4 V%all rights preserved by www.4math.cn
, h. I2 |; O+ \+ M, Q5 T3 _8 d" JAll_error=[];%所有误差存储
% V2 w# l; ~, `/ f# @year=1986:2000;%数据是从1986到2000年的' P' K+ {6 M5 Y
p=[493 372 445;372 445 176;445 176 235;176 235 378;235 378 429;...
5 _4 {1 E) i, u# h: L& v; L 378 429 561;429 561 651;561 651 467;651 467 527;467 527 668;...
( L- Q4 l1 r9 V& \% @5 K4 X1 g; v: ` 527 668 841; 668 841 526;841 526 480;526 480 567;480 567 685]';%输入数据,共15组,每组3个输入
1 Q6 o( A8 v$ [t=[176 235 378 429 561 651 467 527 668 841 526 480 567 685 507];%输出数据,共15组,每组1个输出
" ]5 K1 b$ l! L. N6 I* `" S[normInput,ps] = mapminmax(p);4 {3 Z Q: {6 F; M4 m- p. l& ^
[normTarget,ts] = mapminmax(t);, i& Q, j$ D- D- U* K; N
testPercent = 0.20; % Adjust as desired4 A# j0 r3 j: K( b2 _. U2 {% |
validatePercent = 0.20; % Adust as desired, M7 D5 O* d/ F( r
[trainSamples,validateSamples,testSamples] = dividevec(normInput,normTarget,validatePercent,testPercent);
! I* j9 i8 ]# C. [for j=1:200& Y) Z, [/ Q* T
NodeNum1 = 20; % 隐层第一层节点数
7 Q6 f+ L2 e' y1 M( zNodeNum2=40; % 隐层第二层节点数8 s2 b5 F2 G1 p" J" S, l
TypeNum = 1; % 输出维数! P! a2 G+ g# P# q1 h: q- K6 Q1 |/ A
TF1 = 'tansig';TF2 = 'tansig'; TF3 = 'tansig';
3 M( f/ G$ V0 h" m8 ~net=newff(minmax(normInput),[NodeNum1,NodeNum2,TypeNum],{TF1 TF2 TF3},'traingdx');%网络创建net.trainParam.epochs=10000;%训练次数设置
$ _% y. m3 w9 U2 b& I8 U! ynet.trainParam.goal=1e-6;%训练目标设置$ o+ K8 h3 I3 S- x: f: E
PL.lr=0.01;net.trainfcn='traingdm';/ Y6 u+ d) H6 [: D2 }; c" i# |
[net,tr] = train(net,trainSamples.P,trainSamples.T,[],[],validateSamples,testSamples);) d- I8 Q* M) x8 i0 B: o
[normTrainOutput,Pf,Af,E,trainPerf] = sim(net,trainSamples.P,[],[],trainSamples.T);%正常输入的9组p数据,BP得到的结果t
9 Z/ a' Q s8 i V- \ c, w. f- F[normValidateOutput,Pf,Af,E,validatePerf] = sim(net,validateSamples.P,[],[],validateSamples.T);%用作变量3的数据p,BP得到的结果t
u* \, }& @& ~# g[normTestOutput,Pf,Af,E,testPerf] = sim(net,testSamples.P,[],[],testSamples.T);%用作测试的3组数据p,BP得到的结果t
$ u5 M1 q- E+ w7 ~$ Q& G% ytrainOutput = mapminmax('reverse',normTrainOutput,ts);%正常输入的9组p数据,BP得到的归一化后的结果t5 R) y- H3 o8 U8 k& |
trainInsect = mapminmax('reverse',trainSamples.T,ts);%正常输入的9组数据t8 n# G' ^8 w \& G
validateOutput = mapminmax('reverse',normValidateOutput,ts);%用作变量3的数据p,BP得到的归一化的结果t, r C& B5 I! f) b
validateInsect = mapminmax('reverse',validateSamples.T,ts);%用作变量3的数据t
- A! G0 p- w9 k8 a( ttestOutput = mapminmax('reverse',normTestOutput,ts);%用作变量3组数据p,BP得到的归一化的结果t% x# z: d; J- @& @. f+ a. I6 O
testInsect = mapminmax('reverse',testSamples.T,ts);%用作变量3组数据t
v4 r- m$ z3 |. f%绝对误差计算
; z* B; d/ m# t0 f/ jabsTrainError = trainOutput-trainInsect;% D Q _7 Q M
absTestError = testOutput-testInsect;. G6 G u$ H B2 G2 k
error_sum=sqrt(absTestError(1).^2+absTestError(2).^2+absTestError(3).^2);: w- z( A* Z. e! A( a2 n
All_error=[All_error error_sum];' i5 [. l- |2 @) e D0 ~
eps=90;%其为3组测试数据的标准差,或者每个数据偏差在一定范围内而判别
( b# W" j. S) Q- L4 R$ U/ ]& ]! Qif ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps))
5 A- |- g$ v! T: G8 v8 P9 j% t% T2 X1 @( ssave mynetdata net; q! R# g' i7 n! r V0 v
break
0 i, w6 y) z5 L' H3 v* ^end
4 m U. K' P# D8 Ej" W! F3 J. T& c, ^4 w& }8 v% y
end
2 y1 r1 ~4 ^8 D5 u8 ^* Y问题是:& o* Q a1 b! a1 j9 n! k% q
if ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps))
; }! ]9 y0 [: G4 m3 k) A7 Q2 |中的30是怎么算出来的啊 |
zan
|