展会信息港展会大全

Matlab神经网络预测旅游人口、失业率等
来源:互联网   发布日期:2011-12-04 19:42:46   浏览:22089次  

导读:数学建模程序 Matlab神经网络预测旅游人口,也可以稍作修改用来预测失业率,你懂的...
s=[493 372 445;372 445 176;445 176 235;176 235 378;235 378 429;
   378 429 561;429 561 651;561 651 467;651 467 527;467 527 668;
   527 668 841;668 841 526;841 526 480;526 480 567;480 567 685];
p=s';
t=[176 235 378 429 561 651 467 527 668 841 526 480 567 685 507];
%数据归一化处理
%mapminmax函数默认将数据归一化到[-1,1]
[normInput,ps]=mapminmax(p);
[normTarget,ts]=mapminmax(t);
%将输入的15组数据的20%,即3组,用来作为测试数据;
% 样本的20%,即3组,用来作为变化数据;
%另外9组用来正常输入,用来训练;
testPercent=0.20;  % Adjust as desired
validatePercent=0.20;  % Adust as desired
[trainSamples,validateSamples,testSamples]=dividevec(normInput,normTarget,validatePercent,testPercent);
% 设置网络参数
for j=1:200
NodeNum1=20; % 隐层第一层节点数
NodeNum2=40;   % 隐层第二层节点数
TypeNum=1;   % 输出维数
TF1='tansig';TF2='tansig';TF3='tansig';%各层传输函数,TF3为输出层传输函数
%如果训练结果不理想,可以尝试更改传输函数,以下这些是各类传输函数
%TF1 = 'tansig';TF2 = 'logsig';
%TF1 = 'logsig';TF2 = 'purelin';
%TF1 = 'tansig';TF2 = 'tansig';
%TF1 = 'logsig';TF2 = 'logsig';
%TF1 = 'purelin';TF2 = 'purelin'; 
net=newff(minmax(normInput),[NodeNum1,NodeNum2,TypeNum],{TF1 TF2 TF3},'traingdx');%网络创建
% 设置训练参数
net.trainParam.epochs=10000;%训练次数设置
net.trainParam.goal=1e-6;%训练目标设置
net.trainParam.lr=0.01;%学习率设置,应设置为较少值,太大虽然会在开始加快收敛速度,但临近最佳点时,会产生动荡,而致使无法收敛
% 指定训练参数
%---------------------------------------------------
% net.trainFcn = 'traingd'; % 梯度下降算法
% net.trainFcn = 'traingdm'; % 动量梯度下降算法
%
% net.trainFcn = 'traingda'; % 变学习率梯度下降算法
% net.trainFcn = 'traingdx'; % 变学习率动量梯度下降算法
%
% (大型网络的首选算法)
% net.trainFcn = 'trainrp'; % RPROP(弹性BP)算法,内存需求最小
%
% (共轭梯度算法)
% net.trainFcn = 'traincgf'; % Fletcher-Reeves修正算法
% net.trainFcn = 'traincgp'; % Polak-Ribiere修正算法,内存需求比Fletcher-Reeves修正算法略大
% net.trainFcn = 'traincgb'; % Powell-Beal复位算法,内存需求比Polak-Ribiere修正算法略大
%
% (大型网络的首选算法)
%net.trainFcn = 'trainscg'; % Scaled Conjugate Gradient算法,内存需求与Fletcher-Reeves修正算法相同,计算量比上面三种算法都小很多
% net.trainFcn = 'trainbfg'; % Quasi-Newton Algorithms - BFGS Algorithm,计算量和内存需求均比共轭梯度算法大,但收敛比较快
% net.trainFcn = 'trainoss'; % One Step Secant Algorithm,计算量和内存需求均比BFGS算法小,比共轭梯度算法略大
%
% (中型网络的首选算法)
%net.trainFcn = 'trainlm'; % Levenberg-Marquardt算法,内存需求最大,收敛速度最快
% net.trainFcn = 'trainbr'; % 贝叶斯正则化算法
%
% 有代表性的五种算法为:'traingdx','trainrp','trainscg','trainoss', 'trainlm'
net.trainfcn='traingdm';
[net,tr] = train(net,trainSamples.P,trainSamples.T,[],[],validateSamples,testSamples);
[normTrainOutput,Pf,Af,E,trainPerf] = sim(net,trainSamples.P,[],[],trainSamples.T);%正常输入的9组p数据,BP得到的结果t
[normValidateOutput,Pf,Af,E,validatePerf] = sim(net,validateSamples.P,[],[],validateSamples.T);%用作变量3的数据p,BP得到的结果t
[normTestOutput,Pf,Af,E,testPerf] = sim(net,testSamples.P,[],[],testSamples.T);%用作测试的3组数据p,BP得到的结果t
trainOutput = mapminmax('reverse',normTrainOutput,ts);%正常输入的9组p数据,BP得到的归一化后的结果t
trainInsect = mapminmax('reverse',trainSamples.T,ts);%正常输入的9组数据t
validateOutput = mapminmax('reverse',normValidateOutput,ts);%用作变量3的数据p,BP得到的归一化的结果t
validateInsect = mapminmax('reverse',validateSamples.T,ts);%用作变量3的数据t
testOutput = mapminmax('reverse',normTestOutput,ts);%用作变量3组数据p,BP得到的归一化的结果t
testInsect = mapminmax('reverse',testSamples.T,ts);%用作变量3组数据t

%绝对误差计算
absTrainError = trainOutput-trainInsect;
absTestError = testOutput-testInsect;
error_sum=sqrt(absTestError(1).^2+absTestError(2).^2+absTestError(3).^2);
All_error=[absTrainError absTestError error_sum];
eps=90;%其为3组测试数据的标准差,或者每个数据偏差在一定范围内而判别
if ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps))
save mynetdata net
     break
end
j
end
j
Min_error_sqrt=min(All_error)

testOutput
testInsect

%---------------------------------------------------
% 数据分析和绘图
%---------------------------------------------------  
figure
plot(1:12,[trainOutput validateOutput],'b-',1:12,[trainInsect validateInsect],'g--',13:15,testOutput,'m*',13:15,testInsect,'ro');
title('o为真实值,*为预测值')
xlabel('各组');
ylabel('交通量(辆次/昼夜)');

figure
xx=1:length(All_error);
plot(xx,All_error)
title('误差变化图')

赞助本站

人工智能实验室
AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港