BP工具箱代码

%BP工具箱
clc
clear all;
warning off;
A=xlsread(‘公路运输.xlsx’,‘A1:F20’);
sqrs=A(:,2)’; %人数
sqjdcs=A(:,3)’; %机动车数
sqglmj=A(:,4)’; %公路面积
glkyl=A(:,5)’; %公路客运量
glhyl=A(:,6)’; %公路货运量
p=A(:,2:4)’; %输入数据矩阵
t=A(:,5:6)’; %输入目标矩阵

%利用mapminmax函数对数据归一化处理
[pn,input_str]=mapminmax§;
[tn,output_str]=mapminmax(t);

%建立BP神经网络
net=newff(pn,tn,[3,7,2],{‘purelin’,‘logsig’,‘purelin’});
%10轮回显示一次结果
net.trainParam.show=10;
%学习速度
net.trainParam.lr=0.05;
%最大训练次数
net.trainParam.epochs=5000;
%均方误差
net.trainParam.goal=0.65*10^(-3);
% 工具箱默认 网络误差6次迭代没有发生变化,训练自动停止
%为了让程序继续进行,用以下命令
net.divideFcn=’’;
%开始训练 其中pn,tn分别为输入输出样本
net=train(net,pn,tn);
%利用训练好的网络基于原始数据对BP网络仿真
an=sim(net,pn);

%利用函数mapminmax把仿真得到的数据还原为原始数量级
%训练样本的归一化和反归一化都是用mapminmax函数
a=mapminmax(‘reverse’,an,output_str);

%本利样本数量有限,故使用训练数据进行测试,但通常取新数据测试
x=1990:2009;
newk=a(1,:);
newh=a(2,:);
figure(2);
subplot(2,1,1);
plot(x,newk,‘r-o’,x,glkyl,‘b–+’); %绘制公路客运量对比图
legend(‘网络输出客运量’,‘实际客运量’);
xlabel(‘年份’);
ylabel(‘客运量/万人’);
title(‘源程序神经网络客运量学习和测试对比图’);

subplot(2,1,2);
plot(x,newh,‘r-o’,x,glhyl,‘b–+’); %绘制公路客运量对比图
legend(‘网络输出货运量’,‘实际货运量’);
xlabel(‘年份’);
ylabel(‘货运量/万吨’);
title(‘源程序神经网络货运量学习和测试对比图’);

%利用训练好的网络进行预测 输入2010,2011年相关数据 也应对新数据进行归一化处理
pnew=[73.39 75.55;
3.9635 4.0975
0.98880 1.0268];
%利用原始数据的归一化参数对新数据进行归一化处理
pnewn=mapminmax(‘apply’,pnew,input_str);
%利用归一化后的数据进行仿真
anewn=sim(net,pnewn)
%把仿真数据还原为原始数量级
anew=mapminmax(‘reverse’,anewn,output_str)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值