BP神经网络预测(人口)程序(matlab)

BP神经网络预测(人口)程序(matlab)自己测试人口预测的matlab实现:x=[54167  55196  56300  57482  58796  60266  61465  62828  64653  65994  67207  66207  65859  67295  69172  70499  72538  74542…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

自己测试人口预测的matlab实现:


x=[54167    
55196    
56300    
57482    
58796    
60266    
61465    
62828    
64653    
65994    
67207    
66207    
65859    
67295    
69172    
70499    
72538    
74542    
76368    
78534    
80671    
82992    
85229    
87177    
89211    
 90859    
 92420    
 93717    
 94974    
 96259    
 97542    
 98705    
100072    
101654    
103008    
104357    
105851    
107507    
109300    
111026    
112704    
114333    
115823    
117171    
118517    
119850    
121121    
122389    
123626    
124761    
125786    
126743    
127627    
128453    
129227    
129988    
130756    
131448    
132129    
132802    
134480    
135030    
135770    
136460    
137510]';
% 该脚本用来做NAR神经网络预测
lag=3;    % 自回归阶数
iinput=x;    % x为原始序列(行向量)
n=length(iinput);
%准备输入和输出数据
inputs=zeros(lag,n-lag);
for i=1:n-lag
    inputs(:,i)=iinput(i:i+lag-1)';
end
targets=x(lag+1:end);
 
%创建网络
hiddenLayerSize = 10; %隐藏层神经元个数
net = fitnet(hiddenLayerSize);
 
% 避免过拟合,划分训练,测试和验证数据的比例
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;
 
%训练网络
[net,tr] = train(net,inputs,targets);
%% 根据图表判断拟合好坏
yn=net(inputs);
errors=targets-yn;
figure, ploterrcorr(errors)                      %绘制误差的自相关情况(20lags)
figure, parcorr(errors)                          %绘制偏相关情况
%[h,pValue,stat,cValue]= lbqtest(errors)         %Ljung-Box Q检验(20lags)
figure,plotresponse(con2seq(targets),con2seq(yn))   %看预测的趋势与原趋势
figure, ploterrhist(errors)                      %误差直方图
figure, plotperform(tr)                          %误差下降线
 
 
%% 下面预测往后预测几个时间段
fn=7;  %预测步数为fn
 
f_in=iinput(n-lag+1:end)';
f_out=zeros(1,fn);  %预测输出
% 多步预测时,用下面的循环将网络输出重新输入
for i=1:fn
    f_out(i)=net(f_in);
    f_in=[f_in(2:end);f_out(i)];
end
% 画出预测图
figure,plot(1949:2013,iinput,'b',2013:2020,[iinput(end),f_out],'r')


 

用2014a版matlab运行后结果如下:

     网络结构和各参数显示如下:

                  BP神经网络预测(人口)程序(matlab)

                    BP神经网络预测(人口)程序(matlab)

                 BP神经网络预测(人口)程序(matlab)

                     BP神经网络预测(人口)程序(matlab)

                                                                       误差直方图

                  BP神经网络预测(人口)程序(matlab)

 

                    BP神经网络预测(人口)程序(matlab)

                BP神经网络预测(人口)程序(matlab)

 

                BP神经网络预测(人口)程序(matlab)

图1  自相关    图2 误差

                          BP神经网络预测(人口)程序(matlab)

 图3 预测

BP神经网络预测(人口)程序(matlab)

 

      注意在对结果好坏的判断中,仅仅看误差图是不够的,如果是一个好的预测,那么自相关性图中除了0阶自相关外,其他的自相关系数系数都不应该超过上下置信区间。还有其他的统计量和图表都都写在”%“后面了,如果需要,去掉就可用。最后的预测值为f_out,我的预测值为

138701.065269972    139467.632609654    140207.209707364    141210.109373609    141981.285378849    142461.332139592    143056.073139776

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197096.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 求Sn=a+aa+aaa+…+aaa…a的值

    求Sn=a+aa+aaa+…+aaa…a的值

  • JavaScript高级知识总结(高级篇)[通俗易懂]

    JavaScript高级知识总结(高级篇)[通俗易懂]目录一、深入基础1.1数据类型1.分类:2.判断:3.undefined与null的区别?4.严格区别变量类型与数据类型?1.2数据变量与内存1.什么是数据?2.什么是内存?3.什么是变量?4.内存,数据,变量三者之间的关系5.vara=xxx;a内存中到底保存的是什么?6.关于引用变量的赋值问题:7.在js调用函数时传递变量参数时,是值传递还是引用传递?8.js引擎如何管理内存1.3对象1.什么是对象?2.为什么用对象?

    2022年10月26日
  • git如何退出vim_git提交的命令

    git如何退出vim_git提交的命令有很多方法:退出Vi当编辑完文件,准备退出Vi返回到shell时,可以使用以下几种方法之一。在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则Vi直接退出,返回到shell。在末行模式下,输入命令:wVi保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用

  • C语言——五子棋人机对战

    C语言——五子棋人机对战         先说下背景吧,写下这篇博客时,博主大一在读,C语言初学者,寒假无事,便计划写几个由C语言实现的小游戏以提升编程能力。在这篇博客里分享的是可人机对战的五子棋游戏。         棋类游戏要实现初级的机器智能,其核心思想便是:感知(SENSE)->思考(THINK)->行动(ACT)。所以,本文将尽量以这个顺序介绍实现过程。(1)前期准备:    此程序中,机器…

  • 大学项目总结(一)——基于Android的智能点餐系统

    大学项目总结(一)——基于Android的智能点餐系统这个项目是在我大一下学期开始进行制作,并一直到大一暑假结束完成。一共由我和另一个同学两个人完成,我主要负责前端功能,他主要负责后台下面是主要的图册:…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号