数学建模学习笔记(二十九)BP神经网络使用详例

举报
zstar 发表于 2022/08/06 02:50:07 2022/08/06
【摘要】 在本专栏的第十二篇记录过神经网络的原理和常用函数 此次记录实战中的一次使用,目的是预测垃圾量的增长,垃圾量和其它几个因素相关 此实例包含训练和预测 %GDP %常驻人口数 x1=[93.48 96.13...

在本专栏的第十二篇记录过神经网络的原理和常用函数
此次记录实战中的一次使用,目的是预测垃圾量的增长,垃圾量和其它几个因素相关
此实例包含训练和预测

%GDP
%常驻人口数
x1=[93.48 96.13 100.98 106.27 108.94 109.99 110.85 111.91 113.59 129.12 135.63 142.46 149.36 154.58];
%地区生产总值
x2=[1123.61 1284.61 1498.24 1623.17 1832.63 2441.75 2829.62 3206.57 2958.85 3714.57 4216.52 4601.5 5018.36 6103.69];
%社会消费品零售总额
x3=[210.33 240.23 279.07 322.68 384 457.27 542.28 593.79 649.04 670.9 737.11 803.87 810.4 866.73];
%游客
x4=[1157.2 1250.29 1185.37 1112.65 1276.8 1301.38 1324.36 1324.53 1393.46 1371.5 1359.4 1384 1359.33 1462.68];
%垃圾量
x0=[47.8 56 58.4 52.9 52.9 51.1 51.1 47.55 53.51 57.26 63.96 68.48 71.05 76.2];
A=[x1;x2;x3;x4];
B=x0;
[pn,minp,maxp,tn,mint,maxt]=premnmx(A,B);%对于输入矩阵 A和 B进行归一化处理
dx=[-1,1;-1,1;-1,1;-1,1;];%归一化处理后最小值为-1,最大值为 1
%BP网络训练
net=newff(dx,[4 7 1],{'tansig','tansig','purelin','tansig'},'traingdx');%建立模型,并用梯度下降法训练
net.trainParam.show=1000;%1000轮回显示一次结果
net.trainParam.Lr=0.05;%学习速率为 0.05
net.trainParam.epochs=50000;%最大训练轮回为 5000次
net.trainParam.goal=0.65*10^(-3);%均方误差
net=train(net,pn,tn);%开始训练,其中 pn、 tn分别为输入输出样本
%利用原始数据对 BP网络仿真
an=sim(net,pn);%把训练好的模型进行仿真
a=postmnmx(an,mint,maxt);%把仿真得到的数据还原为原始的数量级
x=2006:2019;
newk=a(1,:);
plot(x,newk,'r-o',x,x0,'b--+');%绘制垃圾产生量对比图
legend('网络输出垃圾量 ','实际垃圾量 ');
xlabel('年份 ');
ylabel('垃圾量 /万吨 ');
%利用训练好的网络进行预测
%2020-2039年的相关数据
pnew=[158.5 164.51 170.52 176.53 182.54 188.55 194.56 200.57 206.58 212.59 218.6 224.61 230.62 236.63 242.64 248.65 254.66 260.67 266.68 272.69;5858.09 6264.52 6670.95 7077.38 7483.81 7890.24 8296.67 8703.1 9109.53 9515.96 9922.39 10328.82 10735.25 11141.68 11548.11 11954.54 12360.97 12767.4 13173.83 13580.26;932.56 982.91 1033.26 1083.61 1133.96 1184.31 1234.66 1285.01 1335.36 1385.71 1436.06 1486.41 1536.76 1587.11 1637.46 1687.81 1738.16 1788.51 1838.86 1889.21;1446.82 1463.51 1480.2 1496.89 1513.58 1530.27 1546.96 1563.65 1580.34 1597.03 1613.72 1630.41 1647.1 1663.79 1680.48 1697.17 1713.86 1730.55 1747.24 1763.93];
pnewn=tramnmx(pnew,minp,maxp);%利用原始数据的归一化参数对新数据进行归一化
anewn=sim(net,pnewn);%利用归一化后的数据进行仿真
anew=postmnmx(anewn,mint,maxt);%把仿真得到的数据还原为原始的数量级

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

文章来源: zstar.blog.csdn.net,作者:zstar-_,版权归原作者所有,如需转载,请联系作者。

原文链接:zstar.blog.csdn.net/article/details/116427216

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。