一个带详细程序和注释的实例,手把手带你学会用BP神经网络做预测

news2024/11/29 4:44:54

目录

1.问题描述

1.1问题剖析

2.实现程序

2.1运行结果

2.3总结

3.预测

3.1输出结果

4.预测理解


1.问题描述

       某运输系统连续9年货运量的有关数据如表2-10所示。根据对关于货运量影响因素的分析,这里分别取国内生产总值GDP、工业总产值、铁路运输线路长度、复线里程比重、公路运输线路长度、等级公路比重、铁路货车数量和民用载货车辆数量等8项指标作为影响货运量的因素,以货运总量、铁路货运量和公路货运量作为货运量的输出指标。根据这些资料,可利用神经网络对运输系统进行货运量预测。

1.1问题剖析

①可以看到这里给出了样本集,而且是已知输入对应目标输出的样本集,所以可以理解为有教师的学习方式做训练和预测。为了验证我么学习好的网络,所以这里将前8组数据作为训练样本集,最后一组数据作为测试样本集。

②由于系统的实际输入/输出数据常常不在[0,1]之间,而神经网络一般要求在[0,1]之间,所以需要在训练神经网络前进行归一化处理。最后对于输出要进行反归一化处理,常见的归一化处理方式为:

 所以对应的反归一化为:

 也可以使用matlab提供的库函数进行归一化和反归一化:

 注:ps为与归一化有关的值,在归一化时可以省略,但是反归一化时不可省略。

③由于使用matlab训练常常借助其库函数能节省很多时间,所以这里先介绍BP网络的重要函数和基本功能:

神经网络通用函数:

 BP神经网络函数:

 这里主要对下面即将用上的建立网络函数newff、训练神经网络函数train做一个详细的介绍:

2.实现程序

%%①确定样本集
%X=[GPD,工业总产值,铁路运输长度,复线比重,公路运输长度,等级公路比重,铁路货车数量,民用载货车辆]
x = [58478,135185,5.46,0.23,16.5,0.21,1005.3,585.44;
    67884,152369,5.46,0.27,18.7,0.26,1105.6,575.03;
    74462,182563,6.01,0.25,21.6,0.28,1204.6,601.23;
    78345,201587,6.12,0.26,25.8,0.29,1316.5,627.89;
    82067,225689,6.21,0.26,30.5,0.31,1423.5,676.95;
    89430,240568,6.37,0.28,34.9,0.33,1536.2,716.32;
    95933,263856,6.38,0.28,39.8,0.36,1632.6,765.24;
    104790,285697,6.65,0.30,42.5,0.39,1753.2,812.22;
    116694,308765,6.65,0.30,46.7,0.41,1865.5,857.26]';
%目标输出T=[货运总量,铁路货运量,公路货运量]
t = [102569,52365,46251;124587,60821,56245;148792,69253,67362;
    162568,79856,78165;186592,91658,90548;205862,99635,98758;
    226598,109862,102564;245636,120566,111257;263595,130378,120356]';
%%②归一化处理
a = [1 2 3 4 5 6 7 8];X = x;T = t;
for i = 1:8  %对样本输入前8组数据进行归一化处理
    X(a(i),:) = (x(a(i),:)-min(x(a(i),:)))/(max(x(a(i),:))-min(x(a(i),:)));
end
for i = 1:3  %对样本输入前8组数据进行归一化处理
    T(a(i),:) = (t(a(i),:)-min(t(a(i),:)))/(max(t(a(i),:))-min(t(a(i),:)));%(某行数据-该行数据最小值)/(该行数据最大值-该行数据最小值)
end
% [X,ps] = mapminmax(x(1:8,:),0,1);X1 = mapminmax('reverse',X,ps);使用库函数归一化
% [T,ps] = mapminmax(t(1:3,:),0,1);
%%③网络设计和训练
X1 = X(:,1:8);T1 = T(:,1:8);%某一列的所有数据作为一组训练输入
%隐藏层神经元个数q=2*M(输入层神经元8个)+1=17,隐藏层神经元传递函数采用tansig双曲正切对称s函数
%输出层神经元传递函数采用logsig s函数,满足网络输出在[0,1]之间
net = newff(minmax(X1),[17,3],{'tansig','logsig'},'trainlm');
net.trainParam.epochs = 1000;%设定训练次数
net.trainParam.goal = 0.0001;%目标最小均方值
LP.lr = 0.1;%学习率
net = train(net,X1,T1);%训练
y1 = sim(net,X1)%输入1-8组数据,训练得到的1-8组输入数据对应的实际输出

2.1运行结果

将原始输入数据作为训练好的网络输入得到的实际输出y1(归一化下)如下:

目标输出(归一化下)如下:

目标函数(均方差)迭代曲线:

在运行前,提前打开nntool工具箱还可以查看训练状态和网络结果等等信息,当然也可以用命令查看(这里不做叙述):

2.3总结

①通过实际输出y1和目标输出T对比可以看到,训练得到的实际输出能够很接近目标输出;

②通过查看误差迭代曲线可以看到,经过7代便可以达到我们设定的0.0001(即1e-4)的误差目标最小值。

 注:由于是学习训练,所以每次实际输出和迭代停止次数是不同的,但差异不大。

3.预测

利用完前8组数据做学习训练后得到了我们的BP网络,现在可以将第9组数据作为测试数据,其测试程序如下:

X_test = X(:,9);%表中的第9组输入数据
y_test = sim(net,X_test);%归一化的实际输出
for i = 1:1:3%使用for循环反归一化
    Y_test(i,:) = y_test(i,:)*(max(t(i,:))-min(t(i,:))+min(t(i,:)))
end 

3.1输出结果

4.预测理解

本质上是利用已知的数据做一个输入维度的图像绘制和延申,最后在图上查看某组未来数据的对应未来输出。

觉得不错,手动点个爱心吧!😁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85294.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用vue-easytable实现仿excel表格,支持可编辑、添加删除行、虚拟表格等功能

使用npm安装vue-easytable npm install --save vue-easytable 在 main.js 中写入以下内容: // 引入样式 import "vue-easytable/libs/theme-default/index.css"; // 引入组件库 import VueEasytable from "vue-easytable"; Vue.use(VueEasyt…

ADI Blackfin DSP处理器-BF533的开发详解49:图像处理专题-Bright (图像亮暗处理)(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像亮暗处理,代码运行时,会通过文件系统打开工程文件根目下" …/ImageView"路径中的 tes…

[附源码]Node.js计算机毕业设计电子市场计算机配件报价系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

聚焦人机交互智能应用领域,APISIX 在希沃网关的应用与实践

分享嘉宾简海清,视源股份运维负责人。 视源股份(CVTE)自成立以来,依托在音视频技术、人机交互、应用开发、系统集成等电子产品领域的软硬件技术积累,建立了教育数字化工具及服务提供商希沃(seewo&#xff0…

三、JavaScript——编写位置

1.在script标签内编写 JS的代码一般可以写到script标签中&#xff0c;script标签的完整写法是要加type"text/javascript",但这个一般可以省略&#xff0c;所以只用<script>即可 <!DOCTYPE html> <html lang"en"> <head><meta …

【架构师李肯】带你走进架构师的一天

作者简介 *架构师李肯&#xff08;全网同名&#xff09;**&#xff0c;一个专注于嵌入式IoT领域的架构师。有着近10年的嵌入式一线开发经验&#xff0c;深耕IoT领域多年&#xff0c;熟知IoT领域的业务发展&#xff0c;深度掌握IoT领域的相关技术栈&#xff0c;包括但不限于主流…

js逆向之加密方法远程调用

js逆向之加密方法远程调用 加密方法的远程调用主要是使用了RPC协议,RPC(Remote Procedure Call)是远程调用的意思。RPC的应用十分广泛,比如在分布式中的进程间通信、微服务中的节点通信。 我们这里使用的rpc其实是实现两个不同进程通信的一种方式,比如在浏览器执行一些方…

SystemUI 调整Recents中全部清除按钮位置

Recents 即多任务界面&#xff0c;显示最近使用过的APP List的。下面内容都是基于Android 11平台修改的。Android 11上&#xff0c;Recents 这一部分代码其实都已经被挪到Launcher3中。由于个人习惯&#xff0c;所以将内容分类作为SystemUI部分记录。 多任务界面主要几个文件&…

工欲善其事,必先利其器,推荐5款效率神器

有句老话这样讲&#xff0c;工欲善其事&#xff0c;必先利其器&#xff0c;好的工具可以让你工作起来事半功倍。 1.全能翻译神器——智能翻译官 这是一款超级强大的翻译软件&#xff0c;什么文本、图片、文档&#xff0c;视频、音频&#xff0c;统统都可以翻&#xff0c;像我…

JAVA毕业设计——基于Springboot+vue的音乐网站系统(源代码+数据库)

github代码地址 https://github.com/ynwynw/music-server-public 毕业设计所有选题地址 https://github.com/ynwynw/allProject 基于Springbootvue的音乐网站系统(源代码数据库)046 一、系统介绍 本项目分为管理员与普通用户两种角色 管理员角色包含以下功能&#xff1a; …

绿色固体ICG-DBCO,凯新生物聚甲基菁染料,仅用于科学研究或者工业应用等非医疗目的,不可用于人类或动物的临床或诊断,非药用,非食用

【外观以及性质】&#xff1a; ICG-DBCO绿色固体&#xff0c;ICG是一种带负电荷的聚甲基菁染料&#xff08;三碳菁染料&#xff09;具有良好的水溶性&#xff0c;其次花菁染料毒性&#xff0c;安全性更好及更的光稳定性。 【试剂物理数据】&#xff1a; 货号&#xff1a;Y-R…

Java面试题(六)腾讯Spring夺命7连问(灵魂拷问)

腾讯面试题&#xff1a;Spring1.谈一谈spring IOC的理解&#xff0c;原理与实现&#xff1f;2.谈一谈Spring IOC的底层实现&#xff1f;3.描述下Bean的生命周期4.Spring如何解决循环依赖问题&#xff1f;5.BeanFactory 和FactoryBean有什么区别&#xff1f;6.Spring 中用到哪些…

ELK日志系统搭建

文章目录ES安装ES启动ES错误处理验证Kibana安装Kibana启动 KibanaLogstash安装Logstash启动Logstash项目整合引入依赖logback-spring.xml启动项目在Kibana中查看链接&#xff1a;点击 提取码&#xff1a;yyds ES 安装ES cat >> /etc/sysctl.conf<<- EOF net.ipv…

基于微信小程序的小区疫情防控系统-计算机毕业设计

随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受业主的喜爱&#xff0c;小区疫情防控小程序被业主普遍使用&#xff0c;为方便业主能够可…

G1D33-BTG复现重跑实验

一、复现BTG 复现很简单&#xff0c;所以就记录一些乱七八糟的叭 &#xff08;一&#xff09;传参 传是否使用cuda的参数的时候&#xff0c;发现传True会报错&#xff0c;后来查到链接 https://stackoverflow.com/questions/43381710/unrecognized-arguments-true 如果什么都…

web前端课程设计 基于HTML+CSS+JavaScript汽车自驾游(10个页面)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

web前端网页设计期末课程大作业:中华传统文化题材网页源码——基于HTML实现中国水墨风书画艺术网站(12个页面)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

关于自动化测试的误区——希望能帮助新手正确的了解自动化一些概念。

自动化测试作为软件测试的一种技术手段&#xff0c;时常被大家讨论。本人在自动化技术方面有过略有小成&#xff0c;今天聊一聊关于自动化的一些误区&#xff0c;以帮助新手能正确的了解和认识自动化一些概念。 测试的行为本质是什么&#xff1f; 为什么先从这个概念开始谈起…

React 入门:实战案例 TodoList 删除一条 Item

文章目录目标实现效果实现思路实现步骤第一步&#xff1a;App 组件中定义删除 Todo 的组件方法第二步&#xff1a;App 组件通过 props 传递删除 Todo 的方法到子组件 List第三步&#xff1a;List 组件接收删除 Todo 的方法&#xff0c;并传递给 Item 子组件第四步&#xff1a;I…

JAVA毕业设计——基于Springboot+vue的图书管理系统(源代码+数据库)

github代码地址 https://github.com/ynwynw/bookmanage2-public 毕业设计所有选题地址 https://github.com/ynwynw/allProject 基于Springbootvue的图书管理系统(源代码数据库) 一、系统介绍 本项目分为管理员与普通用户两种角色 体实现功能如下: 用户系统权限控制管理:主要…