- 在线时间
- 0 小时
- 最后登录
- 2009-9-12
- 注册时间
- 2009-8-31
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 82 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 27
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   23.16% 该用户从未签到
 |
神经网络预测4 r' o& U% S5 j# x1 U% ^' M
% 数据为1986年到2000年的交通量 ,网络为3输入,1输出
, Z4 L; G. ]) d6 x/ \7 h% C% 15组数据,其中9组为正常训练数据,3组为变量数据,3组为测试数据
5 J5 ~: b' I& I) y5 O' y%by akjuan
4 E) r7 T7 {6 H" @9 {4 ?%all rights preserved by www.4math.cn4 N& u- N$ E# i! F6 J
All_error=[];%所有误差存储
# Y+ g( g; g9 s& [year=1986:2000;%数据是从1986到2000年的
5 m7 E; d4 x' e# P; Q% Z! Z- Ap=[493 372 445;372 445 176;445 176 235;176 235 378;235 378 429;...
6 N Y, c7 A+ U+ A- j( T( X* q 378 429 561;429 561 651;561 651 467;651 467 527;467 527 668;...& A& |- z! n: }; X$ t
527 668 841; 668 841 526;841 526 480;526 480 567;480 567 685]';%输入数据,共15组,每组3个输入
# W: U2 O( t% e/ ~t=[176 235 378 429 561 651 467 527 668 841 526 480 567 685 507];%输出数据,共15组,每组1个输出
& w4 ^( {3 C& [2 \[normInput,ps] = mapminmax(p);: U) l) X- T. L7 J L& S
[normTarget,ts] = mapminmax(t);
. o' A- I8 D8 J% {1 N. h; jtestPercent = 0.20; % Adjust as desired7 `7 b9 o% n- u- ^2 `" w! i
validatePercent = 0.20; % Adust as desired4 H0 v6 R- D7 F7 o% b4 s% Y4 i
[trainSamples,validateSamples,testSamples] = dividevec(normInput,normTarget,validatePercent,testPercent);( y9 D/ ?2 Z7 e0 {; M! M& U
for j=1:200) ]5 v; b/ H2 l; }5 s$ Y
NodeNum1 = 20; % 隐层第一层节点数
+ u* e: g: b3 ]1 ?NodeNum2=40; % 隐层第二层节点数
9 F( G- p# X5 b# M/ A! fTypeNum = 1; % 输出维数$ a3 _1 F, o5 o5 M1 f" N) D# r
TF1 = 'tansig';TF2 = 'tansig'; TF3 = 'tansig';
( I5 W/ D( M! N0 @. m$ F! Ynet=newff(minmax(normInput),[NodeNum1,NodeNum2,TypeNum],{TF1 TF2 TF3},'traingdx');%网络创建net.trainParam.epochs=10000;%训练次数设置
1 M, f0 P4 k5 g, c, T% d2 c Unet.trainParam.goal=1e-6;%训练目标设置: A H+ p, J$ G% v w& i
PL.lr=0.01;net.trainfcn='traingdm';% j6 N9 o0 r1 P6 ~! `. f- G
[net,tr] = train(net,trainSamples.P,trainSamples.T,[],[],validateSamples,testSamples);% M, ]/ s# W1 e" _; H8 D
[normTrainOutput,Pf,Af,E,trainPerf] = sim(net,trainSamples.P,[],[],trainSamples.T);%正常输入的9组p数据,BP得到的结果t. I3 y4 q3 U4 r/ n* C% f. Q
[normValidateOutput,Pf,Af,E,validatePerf] = sim(net,validateSamples.P,[],[],validateSamples.T);%用作变量3的数据p,BP得到的结果t
\; m% Z# K8 x7 K[normTestOutput,Pf,Af,E,testPerf] = sim(net,testSamples.P,[],[],testSamples.T);%用作测试的3组数据p,BP得到的结果t5 a# R, I0 X* N: r+ I. ]
trainOutput = mapminmax('reverse',normTrainOutput,ts);%正常输入的9组p数据,BP得到的归一化后的结果t
6 }, O. O E( h2 PtrainInsect = mapminmax('reverse',trainSamples.T,ts);%正常输入的9组数据t6 d: K4 p& x/ I
validateOutput = mapminmax('reverse',normValidateOutput,ts);%用作变量3的数据p,BP得到的归一化的结果t
2 c7 d7 h% B/ q9 [+ WvalidateInsect = mapminmax('reverse',validateSamples.T,ts);%用作变量3的数据t
3 W) _/ x% |8 B$ t0 E/ TtestOutput = mapminmax('reverse',normTestOutput,ts);%用作变量3组数据p,BP得到的归一化的结果t9 q- D. x* v& I- G
testInsect = mapminmax('reverse',testSamples.T,ts);%用作变量3组数据t K: D! c+ `8 \- K9 p k% t R% z
%绝对误差计算
m' f+ P' M3 K- d% H3 u9 F; I5 p5 T( babsTrainError = trainOutput-trainInsect;
+ e& x4 }1 P6 i3 U* @2 f X& RabsTestError = testOutput-testInsect;& _( N7 S* U) x8 N5 n0 K# k, h5 \
error_sum=sqrt(absTestError(1).^2+absTestError(2).^2+absTestError(3).^2);
9 X3 X' K: w. r0 C% R0 D# y: YAll_error=[All_error error_sum];
. b! ~/ V" I/ q. Heps=90;%其为3组测试数据的标准差,或者每个数据偏差在一定范围内而判别
, e/ ^5 ~* Z; u) }if ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps))2 }! g \/ @1 K9 y1 X" ^3 r8 u4 i
save mynetdata net4 A: O$ m$ H! m5 A
break
g% X2 Y/ f2 Hend6 C; k; d3 S+ y* M
j' J1 i- |. f0 l2 p
end* g4 b5 x3 J- z1 S
问题是:
6 ]3 C z% o v6 ^1 a1 e E0 Cif ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps))
# R1 r" L( l) a, H q* {- E中的30是怎么算出来的啊 |
zan
|