- 在线时间
- 0 小时
- 最后登录
- 2009-9-12
- 注册时间
- 2009-8-31
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 82 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 27
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   23.16% 该用户从未签到
 |
神经网络预测
! l I: K! C! t- [9 r' K% 数据为1986年到2000年的交通量 ,网络为3输入,1输出
1 H Q$ Y: M/ D- {; q7 N% 15组数据,其中9组为正常训练数据,3组为变量数据,3组为测试数据
- B. j" N7 }1 ?6 S' i%by akjuan; {( G# ^) i. d4 i5 @+ r
%all rights preserved by www.4math.cn
3 [; g2 I7 s) H# p& F wAll_error=[];%所有误差存储8 x- i( \9 T3 \- Q& g2 [
year=1986:2000;%数据是从1986到2000年的
h! V% e1 s# ~, V5 B8 \p=[493 372 445;372 445 176;445 176 235;176 235 378;235 378 429;...: ^0 V$ I8 j$ u" V5 Q4 R3 V& M
378 429 561;429 561 651;561 651 467;651 467 527;467 527 668;...
% r: Q/ b* c8 D' B, }+ ?7 K 527 668 841; 668 841 526;841 526 480;526 480 567;480 567 685]';%输入数据,共15组,每组3个输入
' ?; K4 b& p. m1 Y. V: u1 _t=[176 235 378 429 561 651 467 527 668 841 526 480 567 685 507];%输出数据,共15组,每组1个输出
2 l. K6 q) |: f9 ^[normInput,ps] = mapminmax(p);
; ?7 `5 R3 z L) Z[normTarget,ts] = mapminmax(t);: z) O% l8 Y4 F* S% D; W7 _: Z- p
testPercent = 0.20; % Adjust as desired+ X, C; _* F4 S! b/ Q( n$ [5 N% I9 p& C
validatePercent = 0.20; % Adust as desired, w, U1 j! b5 Y& E. m: c4 }* z+ d
[trainSamples,validateSamples,testSamples] = dividevec(normInput,normTarget,validatePercent,testPercent);- h* X! K# v; T/ U. I- b
for j=1:2007 j+ z* o. O6 u; I4 d
NodeNum1 = 20; % 隐层第一层节点数( T% J, p$ |4 H1 P% V: A# C) t" Y
NodeNum2=40; % 隐层第二层节点数
7 t J3 v: R3 ~: M' ]- q8 eTypeNum = 1; % 输出维数
* `5 h4 ]( l6 [ a" PTF1 = 'tansig';TF2 = 'tansig'; TF3 = 'tansig';
& q6 X0 P9 ^2 B: xnet=newff(minmax(normInput),[NodeNum1,NodeNum2,TypeNum],{TF1 TF2 TF3},'traingdx');%网络创建net.trainParam.epochs=10000;%训练次数设置( \3 r8 g# W7 A6 u, [* j
net.trainParam.goal=1e-6;%训练目标设置0 ~9 }- e4 [1 P3 R0 j, }- M' m
PL.lr=0.01;net.trainfcn='traingdm';
/ o3 m1 E& {3 R% R! m4 N0 i[net,tr] = train(net,trainSamples.P,trainSamples.T,[],[],validateSamples,testSamples);
9 i8 z$ K6 Z* v0 L[normTrainOutput,Pf,Af,E,trainPerf] = sim(net,trainSamples.P,[],[],trainSamples.T);%正常输入的9组p数据,BP得到的结果t
r( F' j7 d" j) P* z* x[normValidateOutput,Pf,Af,E,validatePerf] = sim(net,validateSamples.P,[],[],validateSamples.T);%用作变量3的数据p,BP得到的结果t
, H4 \! d7 q2 g4 F3 W% D[normTestOutput,Pf,Af,E,testPerf] = sim(net,testSamples.P,[],[],testSamples.T);%用作测试的3组数据p,BP得到的结果t
3 b5 |! X* l+ X7 D: Q) MtrainOutput = mapminmax('reverse',normTrainOutput,ts);%正常输入的9组p数据,BP得到的归一化后的结果t
+ E# ^) _* Z( XtrainInsect = mapminmax('reverse',trainSamples.T,ts);%正常输入的9组数据t
, q ~0 ~! n5 g7 ]( h" Q& PvalidateOutput = mapminmax('reverse',normValidateOutput,ts);%用作变量3的数据p,BP得到的归一化的结果t( m/ n1 r" ^4 C! o9 m, ^
validateInsect = mapminmax('reverse',validateSamples.T,ts);%用作变量3的数据t* u [6 t2 J! u4 b6 K* o- v
testOutput = mapminmax('reverse',normTestOutput,ts);%用作变量3组数据p,BP得到的归一化的结果t
6 P# R5 g Y# J2 {5 ]& ^# [testInsect = mapminmax('reverse',testSamples.T,ts);%用作变量3组数据t) J1 @: ^* X" U6 Q# {
%绝对误差计算- I2 n+ W! i% k) Y$ t
absTrainError = trainOutput-trainInsect;
- ~7 \$ j0 ]" C4 Q$ t0 ^ iabsTestError = testOutput-testInsect;, o. t2 S1 s0 o' L; }
error_sum=sqrt(absTestError(1).^2+absTestError(2).^2+absTestError(3).^2);! F# C& S7 M& n5 R3 D1 @
All_error=[All_error error_sum];
4 N, f$ L* o6 [0 ~# t8 Peps=90;%其为3组测试数据的标准差,或者每个数据偏差在一定范围内而判别9 t) O+ _, {8 H- j
if ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps))5 f4 ?! r& M G8 A
save mynetdata net
' u$ k7 B4 s( {" d) O6 d; B& ] break
# b1 v- v, o9 K3 O1 Lend
: n8 }0 V# R8 J) Y( i1 tj$ ?% P) \/ P% a/ _6 p
end
7 P3 A* r3 U; c8 P( e1 ~问题是:
9 t0 k# u4 _7 N1 G4 j" @ N! L9 }if ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps))4 H& A& w! C! u$ y7 f/ k
中的30是怎么算出来的啊 |
zan
|