- 在线时间
- 0 小时
- 最后登录
- 2009-9-12
- 注册时间
- 2009-8-31
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 82 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 27
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   23.16% 该用户从未签到
 |
神经网络预测! Q7 w2 m, d- a9 R) L
% 数据为1986年到2000年的交通量 ,网络为3输入,1输出6 S( v% l/ A8 Z( u" D- s
% 15组数据,其中9组为正常训练数据,3组为变量数据,3组为测试数据. z: y/ a7 B1 m
%by akjuan
5 }) }) H7 K& l0 }%all rights preserved by www.4math.cn
1 L) l, B! }% E0 V: ^% F# q4 gAll_error=[];%所有误差存储2 l$ m* U; j( c/ U' X. n- y
year=1986:2000;%数据是从1986到2000年的
$ [5 B2 |/ ^9 I9 b$ c( V1 k5 o, Kp=[493 372 445;372 445 176;445 176 235;176 235 378;235 378 429;...
. p- L# G r4 i6 e. a 378 429 561;429 561 651;561 651 467;651 467 527;467 527 668;...; W$ a9 C& f+ \+ _& q
527 668 841; 668 841 526;841 526 480;526 480 567;480 567 685]';%输入数据,共15组,每组3个输入
- U) P; P# B9 E2 o3 I1 ?% D, ht=[176 235 378 429 561 651 467 527 668 841 526 480 567 685 507];%输出数据,共15组,每组1个输出+ v' A0 T6 f' W# v& \/ S: q5 E
[normInput,ps] = mapminmax(p);
7 T! k; o$ Q3 O6 [[normTarget,ts] = mapminmax(t);: h0 G" F" l9 B/ Y
testPercent = 0.20; % Adjust as desired" U) N" u" _6 d3 ]* b' s0 R
validatePercent = 0.20; % Adust as desired/ Y) c; Y- a4 m4 h$ G& l$ E
[trainSamples,validateSamples,testSamples] = dividevec(normInput,normTarget,validatePercent,testPercent);
' N2 c2 m0 {! f, C6 i$ h3 tfor j=1:200
4 \( p: G& q$ y) _: d; d G/ C& RNodeNum1 = 20; % 隐层第一层节点数
! Q; |+ Y# k) pNodeNum2=40; % 隐层第二层节点数
) r q% ^9 h7 ~" TTypeNum = 1; % 输出维数7 p5 {* J3 H" X
TF1 = 'tansig';TF2 = 'tansig'; TF3 = 'tansig';+ j2 _- g, Y4 n, o
net=newff(minmax(normInput),[NodeNum1,NodeNum2,TypeNum],{TF1 TF2 TF3},'traingdx');%网络创建net.trainParam.epochs=10000;%训练次数设置2 N: w. ~: Z. i6 N. j
net.trainParam.goal=1e-6;%训练目标设置
) U/ U6 d9 U& o+ s$ p: PPL.lr=0.01;net.trainfcn='traingdm';
6 B; x- _* T6 u2 Z! _[net,tr] = train(net,trainSamples.P,trainSamples.T,[],[],validateSamples,testSamples);6 e$ y7 V- Q: e3 R0 ?* t2 l
[normTrainOutput,Pf,Af,E,trainPerf] = sim(net,trainSamples.P,[],[],trainSamples.T);%正常输入的9组p数据,BP得到的结果t: }; j( o0 E# C$ A2 E3 `, f
[normValidateOutput,Pf,Af,E,validatePerf] = sim(net,validateSamples.P,[],[],validateSamples.T);%用作变量3的数据p,BP得到的结果t9 [, m2 S6 |5 [% x
[normTestOutput,Pf,Af,E,testPerf] = sim(net,testSamples.P,[],[],testSamples.T);%用作测试的3组数据p,BP得到的结果t
1 t5 K/ t1 M" d. w& \% |trainOutput = mapminmax('reverse',normTrainOutput,ts);%正常输入的9组p数据,BP得到的归一化后的结果t- v/ q' e2 T* S- _' }! W u
trainInsect = mapminmax('reverse',trainSamples.T,ts);%正常输入的9组数据t8 r5 T3 n* z7 @' p6 E
validateOutput = mapminmax('reverse',normValidateOutput,ts);%用作变量3的数据p,BP得到的归一化的结果t- X( \% D4 e" u9 |: v+ J
validateInsect = mapminmax('reverse',validateSamples.T,ts);%用作变量3的数据t
& `0 g- O# l8 y* j" D# [; l; \testOutput = mapminmax('reverse',normTestOutput,ts);%用作变量3组数据p,BP得到的归一化的结果t
8 R9 S9 ]7 P# itestInsect = mapminmax('reverse',testSamples.T,ts);%用作变量3组数据t
, w/ y+ |$ }4 \) K2 P/ x%绝对误差计算2 ?* ^, A" ^- Z8 U
absTrainError = trainOutput-trainInsect;: Q9 [7 [! n- [2 m, p5 {- _
absTestError = testOutput-testInsect;6 C. e2 n. ^0 a5 @: r
error_sum=sqrt(absTestError(1).^2+absTestError(2).^2+absTestError(3).^2);3 `# C3 N, w% L+ A/ b# r
All_error=[All_error error_sum];
6 a) x' a R! Q+ e: {0 i9 E+ v8 Qeps=90;%其为3组测试数据的标准差,或者每个数据偏差在一定范围内而判别
) Y w9 ?4 [9 ]& U9 cif ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps))
5 F. G) @& H/ H" h1 g: }; x* ~save mynetdata net: L/ o# Z& t+ e/ U2 U# x
break+ N9 Z- V i$ y' y# h# o! Z
end' o6 H8 W) z7 H0 Z; D
j
6 P$ M' P- s! Q* H8 Lend, P; f0 H2 [& s8 C2 R+ S
问题是:" D6 v3 b, @# x- t% |( ~2 p
if ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps))
& w3 `; v% O$ |8 Z( E中的30是怎么算出来的啊 |
zan
|