- 在线时间
- 0 小时
- 最后登录
- 2009-9-12
- 注册时间
- 2009-8-31
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 82 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 27
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   23.16% 该用户从未签到
 |
神经网络预测7 u2 S( {; b x7 ?3 K% F# l
% 数据为1986年到2000年的交通量 ,网络为3输入,1输出9 c) Q8 ?* n. T) T0 w4 R; I4 R
% 15组数据,其中9组为正常训练数据,3组为变量数据,3组为测试数据
2 D5 ]: [/ j E1 f9 p%by akjuan
4 E4 H- J$ l- w$ w" ~7 ^( P8 f' x%all rights preserved by www.4math.cn
/ z/ [# V& @# e$ k! P- vAll_error=[];%所有误差存储6 Z+ f; t, \* r8 E- M: G$ h
year=1986:2000;%数据是从1986到2000年的7 V8 T% Y! \* Y7 S+ v. E% F
p=[493 372 445;372 445 176;445 176 235;176 235 378;235 378 429;...
k& d- H! m$ o( y 378 429 561;429 561 651;561 651 467;651 467 527;467 527 668;...# T0 y' ~7 z9 Z) H" i7 i1 s$ P
527 668 841; 668 841 526;841 526 480;526 480 567;480 567 685]';%输入数据,共15组,每组3个输入
! B2 k9 X+ i9 z: @ b4 [7 Wt=[176 235 378 429 561 651 467 527 668 841 526 480 567 685 507];%输出数据,共15组,每组1个输出$ ]% y M* }$ |
[normInput,ps] = mapminmax(p);, E* _' F* Q) C, m5 u6 V$ o
[normTarget,ts] = mapminmax(t);
+ d+ q# o6 [2 e4 @9 { l6 RtestPercent = 0.20; % Adjust as desired# m) i( Z+ G ]( u& C. R
validatePercent = 0.20; % Adust as desired/ Z8 f! t( w2 Q2 ?' H/ W
[trainSamples,validateSamples,testSamples] = dividevec(normInput,normTarget,validatePercent,testPercent);* d3 x3 I% Q% ~& b0 m2 h) A) t; [
for j=1:200
. f" i- r& G" }% e8 T# U( h+ k( BNodeNum1 = 20; % 隐层第一层节点数! {4 w& V& K# ~
NodeNum2=40; % 隐层第二层节点数
' s/ x0 I; u: J" b( p2 c$ o! kTypeNum = 1; % 输出维数. E |" }5 l+ i3 G: ^3 v
TF1 = 'tansig';TF2 = 'tansig'; TF3 = 'tansig';
3 l. d* X1 g, l r% O" F/ A4 jnet=newff(minmax(normInput),[NodeNum1,NodeNum2,TypeNum],{TF1 TF2 TF3},'traingdx');%网络创建net.trainParam.epochs=10000;%训练次数设置4 T4 ^6 J1 f* L: @" B
net.trainParam.goal=1e-6;%训练目标设置/ H! p. W, s% i8 _) E
PL.lr=0.01;net.trainfcn='traingdm';) c( l6 o6 H/ ^. X6 ]
[net,tr] = train(net,trainSamples.P,trainSamples.T,[],[],validateSamples,testSamples);4 R+ y: w6 ~2 |6 B8 w% N9 z
[normTrainOutput,Pf,Af,E,trainPerf] = sim(net,trainSamples.P,[],[],trainSamples.T);%正常输入的9组p数据,BP得到的结果t
" I! r. \4 B' {; Y; t1 U[normValidateOutput,Pf,Af,E,validatePerf] = sim(net,validateSamples.P,[],[],validateSamples.T);%用作变量3的数据p,BP得到的结果t8 k- f; O: I& t: w
[normTestOutput,Pf,Af,E,testPerf] = sim(net,testSamples.P,[],[],testSamples.T);%用作测试的3组数据p,BP得到的结果t
3 J4 g) ~& Y0 s3 F9 I( p4 n8 CtrainOutput = mapminmax('reverse',normTrainOutput,ts);%正常输入的9组p数据,BP得到的归一化后的结果t
1 q1 p; u; e/ x+ G- L% d7 WtrainInsect = mapminmax('reverse',trainSamples.T,ts);%正常输入的9组数据t m4 W1 u4 `, A8 }& I
validateOutput = mapminmax('reverse',normValidateOutput,ts);%用作变量3的数据p,BP得到的归一化的结果t3 X% e; K5 O5 \# f( y' @
validateInsect = mapminmax('reverse',validateSamples.T,ts);%用作变量3的数据t
% a5 K4 S" D: W/ ftestOutput = mapminmax('reverse',normTestOutput,ts);%用作变量3组数据p,BP得到的归一化的结果t% ]9 V) ]" J' o" N9 Q$ }
testInsect = mapminmax('reverse',testSamples.T,ts);%用作变量3组数据t
M7 |1 j7 F, l5 S3 V( I* ?0 G%绝对误差计算
: S' l. T# ^; K' cabsTrainError = trainOutput-trainInsect; N) I, s/ V! Z6 ~
absTestError = testOutput-testInsect;
! P: j+ o/ Z% r: u8 ferror_sum=sqrt(absTestError(1).^2+absTestError(2).^2+absTestError(3).^2);
( N+ E* V# `' ?% D4 _6 _All_error=[All_error error_sum];. b. U+ L% W M9 x4 [
eps=90;%其为3组测试数据的标准差,或者每个数据偏差在一定范围内而判别
3 u- U. i( V7 s: d7 Wif ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps))
! W, k7 L K# t" G9 V# o0 B: Ysave mynetdata net6 c N. @9 }9 l* W2 ^1 U
break: F# c0 b# l3 @+ {1 y! u U
end
# D: j1 C: ?6 t$ Aj
# q) S$ E9 e& {end4 _2 c1 A4 p* d1 _1 n
问题是:
" ?. K4 U: h5 S# o! e+ K* Iif ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps)). G+ V7 R! ~& p* Y& z+ F" J: E
中的30是怎么算出来的啊 |
zan
|