【详述】BP神经网络建模流程一步一步详述

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/

目录

  • 一、BP神经网络的建模流程
  • 二、BP神经网络的建模分步讲解
    • 2.1.数据归一化
    • 2.2.数据划分
    • 2.3.网络结构设置
    • 2.4.网络训练
    • 2.5.训练效果评估

本文梳理BP神经网络的建模流程,供大家建模时进行借鉴。

一、BP神经网络的建模流程

BP神经网络的建模流程如下:
BP神经网络的建模流程
总的来说,BP神经网络建模的主流程共有3个大步骤,6个小步骤,
具体如下:
👉 数据预处理 :数据归一化、数据划分
👉 网络构建 :网络结构设置、网络训练
👉 效果评估 :模型训练效果评估、模型预测效果评估

二、BP神经网络的建模分步讲解

2.1.数据归一化

在建模前,需要先将数据进行归一化,即把数据范围缩放到[-1,1]之间。在matlab中可以使用mapminmax函数对数据进行归一化,如下:

[X,~] = mapminmax(X,-1,1);
[y,~] = mapminmax(y,-1,1);

2.2.数据划分

将数据划分为三部分,一部分用于测试,一部分用于训练。

randIndex  = randperm(100);
trainIndex = sort(randIndex(1:80));       % 随机选出80个数据作为训练数据(这里先选出数据的序号)
testIndex  = sort(randIndex(81:100));     % 将剩下的20个数据作为检验数据(这里先选出数据的序号)
X_train  = X(:,trainIndex);               % 根据序号选出80个用于训练的输入
X_test   = X(:,testIndex);                % 根据序号选出20个用于检验的输入
y_train = y(:,trainIndex);                % 根据序号选出80个用于训练的输出
y_test  = y(:,testIndex);                 % 根据序号选出20个用于检验的输出

这里我们划分了80%的数据作为训练数据,用来训练BP神经网络。

2.3.网络结构设置

要处理好数据之后,我们就需要初始化一个BP神经网络,同时设置好网络的结构,例如隐层层数、隐节点个数、训练算法等等。在matlab中初始化一个BP神经网络使用newff函数,如下:

net = newff(X_train,y_train ,3,{'tansig','purelin'},'trainlm');

2.4.网络训练

设置好网络后,就可以开始训练BP神经网络了,在训练前还可以设置一些训练的参数,例如训练目标goal,训练步数epochs等等,如下

net.trainparam.goal        = 0.0001;                    % 训练目标:均方误差低于0.0001
net.trainparam.show        = 400;                        % 每训练400次展示一次结果
net.trainparam.epochs      = 15000;                      % 最大训练次数:15000.
[net,tr] = train(net,X_train,y_train );  % 调用matlab神经网络工具箱自带的train函数训练网络

2.5.训练效果评估

模型训练完成后,点击训练面板上的Regression就可以看到模型的回归效果。
BP神经网络训练面板
点击后我们可以看到模型的效果:
模型训练效果
除了看回归系数外,也可以自行计算相关的指标。例如MSE,MAE等等。
mse的计算公式:
mse = avg ( y − y ^ ) 2 \text{mse} = \text{avg}(\text{y}-\hat{\text{y}})^2 mse=avg(yy^)2
mae的计算公式:
mae = avg ( ∣ y − y ^ ∣ ) \text{mae} = \text{avg}(|\text{y}-\hat{\text{y}}|) mae=avg(yy^)
其中, y ^ \hat{\text{y}} y^是模型的预测值, y \text{y} y是真实值


相关链接:

《老饼讲解-机器学习》:老饼讲解-机器学习教程-通俗易懂
《老饼讲解-神经网络》:老饼讲解-matlab神经网络-通俗易懂
《老饼讲解-神经网络》:老饼讲解-深度学习-通俗易懂

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

循环神经网络——RNN

循环神经网络 在之前NLP基础章节-语言模型中我们介绍了 n n n 元语法,其中单词 x t x_t xt​ 在时间步 t t t 的条件概率仅取决于前面 n n n 个单词,若是想要将之前单词的影响也加入那么模型参数数量会指数级增长。但是可能之前的单词存在重要的信息…

进阶篇08——MySQL管理

系统数据库 常用工具 mysql 客户端工具 mysqladmin 执行管理操作 mysqlbinlog 数据库二进制日志转成文本 mysqlshow 数据库查找 mysqldump 数据库备份 mysqlimport/source 数据库导入

LLM大语言模型-AI大模型全面介绍

简介: 大语言模型(LLM)是深度学习的产物,包含数十亿至数万亿参数,通过大规模数据训练,能处理多种自然语言任务。LLM基于Transformer架构,利用多头注意力机制处理长距离依赖,经过预训…

Python-爬虫 下载天涯论坛帖子

为了爬取的高效性,实现的过程中我利用了python的threading模块,下面是threads.py模块,定义了下载解析页面的线程,下载图片的线程以及线程池 import threading import urllib2 import Queue import re thread_lock threading.RL…

宝塔计划任务调用node程序时,log4js日志保存本地位置会发生变化

接我上一篇文章的情况 超简单的nodejs使用log4js保存日志到本地(可直接复制使用)-CSDN博客 原本应当保存在node项目目录下的日志文件,如果使用宝塔的计划任务来定时执行的话,日志保存路径会发生变化到如下图的位置: 如…

JFrame和JScrollPanel布局初步使用

还不是很了解,做了几个程序; import java.awt.Container; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.border.EmptyBorder;public class pa1 {public static void main(String[] agrs){JF…

AWS在国内的持续受欢迎:探究背后的原因

亚马逊云(AWS)作为全球领先的云计算服务提供商,在国内市场仍然保持着强劲的竞争力和广泛的用户群。尽管国内也有一些本土云计算服务提供商的崛起,但AWS在国内仍然有大量的用户在使用。我们九河云,一直致力AWS云相关服务…

如何使用 Swift 中的 GraphQL

文章目录 前言基础知识ApolloGraphQL结论前言 我一直在分享关于类型安全和在 Swift 中构建健壮 API 的更多内容。今天,我想继续探讨类型安全的话题,介绍 GraphQL。GraphQL 是一种用于 API 的查询语言。本周,我们将讨论 GraphQL 的好处,并学习如何在 Swift 中使用它。 基础…

面试-JMM的内存可见性

1.JAVA内存模型 分析: 由于JVM运行程序的实体是线程,而每个线程创建时,JVM都会 为其创建一个工作内存(栈空间),用于存储线程私有的数据。而java内存模型中规定所有变量都存储在主内存中。主内存是共享内存区域,所有线程都可以访问…

国密SSL证书提升网络安全

随着数字化时代的到来,网络安全已经成为全球关注的焦点。在这种背景下,SSL证书作为保护数据传输安全的重要工具,其重要性日益凸显。 数字证书产品有以下几种类别: 单域名SSL证书:为单一网站提供安全保护。 多域名SS…

C++ ─── vector的实现

知识点: ① 因为vector是模版,所以声明和定义都放在.h中,防止出现编译错误 .h不会被编译,在预处理中.h在.cpp中展开所以在编译时只有.cpp 而 .cpp顺序编译,只会进行向上查找,因此至少有函数的声明。 ②memc…

【JavaEE】浅谈线程(二)

线程 线程的常见属性 线程属性可以通过下面的表格查看。 •ID 是线程的唯⼀标识,不同线程不会重复 • 名称是各种调试⼯具⽤到(如jconsoloe) • 状态表示线程当前所处的⼀个情况,下⾯我们会进⼀步说明 • 优先级高的线程理论上来…

报道 | 2024年7月-2024年9月国际运筹优化会议汇总

封面图来源: https://www.pexels.com/zh-cn/photo/1181406/ 2024年7月-2024年9月召开会议汇总: 2024 INFORMS Advances in Decision Analysis Conference (ADA) Location: Finland Important Dates: Conference: July 10-12, 2024 Details:https://w…

【学习】科大睿智解读ITSS认证中咨询机构的作用

企业拥有ITSS认证这不仅将为企业开拓商机,提升竞争力,还能促使企业改进内部运维流程,提高服务质量,为客户提供更优质的IT运维支持。在ITSS认证中,咨询机构扮演着重要的角色,其主要作用包括以下几个方面&…

【服务器】磁盘满载--docker 的日志文件太大造成满载

一.背景 早上过来测试反馈服务器都宕机了,访问不了。一看服务器磁盘都已经满了。所以开始清磁盘数据。 二.解决 主要查看下面目录情况: /home/libe/docker /containers /volumes /overlay21.查看磁盘情况 df -h/ du -a|sort -rn|…

前端开发的工厂设计模式

在前端开发中,工厂设计模式(Factory Pattern)是一种非常有用的设计模式,能够帮助我们在创建对象时减少代码的重复性和复杂性。 一、工厂设计模式概述 工厂设计模式是一种创建型设计模式,主要目的是定义一个用于创建对…

【PL理论深化】(6) Ocaml 语言: 函数 | 匿名函数 | 函数可以接受多个参数 | OCaml 是一种将函数视为 first-class 的语言

💬 写在前面:本章我们继续介绍如何使用 OCaml 进行函数式编程。介绍如何使用 let 定义函数,讲解匿名函数,函数可以接受多个参数,以及讨论 OCaml 将函数视为 first-class。 目录 0x00 函数 0x01 匿名函数&#xff08…

【C语言】--常见类型和概念

❤️个人主页: 起名字真南 &#x1f495;个人专栏:【数据结构初阶】 【C语言】 目录 第一个C语言程序main函数printf函数库函数关键字字符和ASCII码字符串和\0转义字符 第一个C语言程序 #include<stdio.h> int main() {printf("Hello World\n");return 0; }ma…

【神经网络】CNN网络:深入理解卷积神经网络

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&#xff01; CNN网络&#xff1a;深入理解…