matlab-实现-BP-神经网络

        最近写论文用到了很多神经网络和优化算法,算是废了不少精力收集起来的,还是整理出来分享给大家,以免浪费了。

        本篇以最简单的 BP神经网络开始吧

        详细的实现步骤如下:

1.环境准备:清空环境变量、关闭开启的图窗、清空变量和命令行。

2.数据加载:从 "数据集.xlsx" 文件中读取数据。

3.数据分析:设定训练集占数据集比例、设定输出维度、计算样本个数、打乱数据集(如果不希望打乱数据集,可以注释相应的代码)、计算训练集样本个数和输入特征维度。

4.划分训练集和测试集:将数据集划分成训练集和测试集。

5.数据归一化:对训练集和测试集的输入和输出进行归一化处理。

6.建立模型:使用 newff 函数创建一个新的前馈神经网络。

7.设置参数:设置神经网络的训练参数,如最大迭代次数、误差阈值和学习率。

8.模型训练:使用训练集对神经网络进行训练。

9.仿真测试:使用训练好的神经网络对训练集和测试集进行预测。

10.数据反归一化:将预测结果反归一化,使其恢复到原始数据的范围。

11.绘图:输出回归图和误差直方图,计算各种评估指标,如均方根误差 (RMSE)、决定系数 (R2)、均方误差 (MSE)、剩余预测残差 (RPD)、平均绝对误差 (MAE) 及平均绝对百分比误差 (MAPE),并分别对训练集和测试集结果进行绘图,展示预测结果与真实值的对比。

这边只展示核心代码

%%  建立模型

S1 = 15;           %  隐藏层节点个数                

net = newff(p_train, t_train, S1);

%%  设置参数

net.trainParam.epochs = 1000;        % 最大迭代次数

net.trainParam.goal   = 1e-6;        % 设置误差阈值

net.trainParam.lr     = 0.01;        % 学习率

%%  模型训练

net.trainParam.showWindow = 1;       % 打开训练窗口

net = train(net, p_train, t_train);  % 训练模型

%%  仿真测试

t_sim1 = sim(net, p_train);

t_sim2 = sim(net, p_test );

详细解释如下:

  1. 建立模型S1 = 15; net = newff(p_train, t_train, S1); 该部分先定义隐藏层节点个数为 15,然后使用 newff 函数创建一个新的前馈神经网络,其中 p_train 是训练集的输入数据,t_train 是训练集的目标数据,S1 是隐藏层节点的个数。

  2. 设置参数net.trainParam.epochs = 1000; net.trainParam.goal = 1e-6; net.trainParam.lr = 0.01; 设置训练参数,其中最大迭代次数为 1000,误差阈值为 1e-6,学习率为 0.01。

  3. 模型训练net.trainParam.showWindow = 1; net = train(net, p_train, t_train); 首先打开训练窗口来显示训练过程,然后使用 train 函数对神经网络进行训练,其中 net 是前馈神经网络,p_train 是训练集的输入数据,t_train 是训练集的目标数据。

  4. 仿真测试t_sim1 = sim(net, p_train); t_sim2 = sim(net, p_test); 使用训练好的神经网络对训练集和测试集进行预测,其中 sim 函数用于神经网络的预测,net 是训练好的神经网络,p_train 和 p_test 分别是训练集和测试集的输入数据,t_sim1 和 t_sim2 分别是对训练集和测试集的预测结果。

完整的代码和数据见

https://github.com/dazhiwang233/matlab-implementation-of-BP-neural-networks

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

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

相关文章

【腾讯云云上实验室-向量数据库】腾讯云VectorDB:深度学习场景下的新一代数据存储方案

引言 ​  在深度学习领域的实践中,一般会涉及到向量化处理的数据,如图像、文本、音频等,这些数据的存储和检索对于许多深度学习任务至关重要。传统的关系型数据库和NoSQL数据库在存储和检索这类大规模向量数据时,通常不能满足高…

学习计划计划执行记录

11.21--写下学习目标 游戏行业通识学习: 求知鱼游戏学院的个人空间-求知鱼游戏学院个人主页-哔哩哔哩视频 (bilibili.com) (28 封私信 / 80 条消息) 游鲨游戏圈 - 知乎 (zhihu.com) 书籍学习: 软技能2:软件开发者职业生涯指南 面经学习…

Redis 与其他数据库的不同之处 | Navicat

Redis,即远程字典服务器(Remote Dictionary Server),它是一个多功能且高性能的键值存储系统,在数据库领域中已获得广泛关注和认可。在处理简单数据结构方面,它因其快速和高效而著称。本文中,我们…

[媒体]js上传视频图片格式对应的原生type判断

视频格式: wmv: video/x-ms-wmvrm: application/vnd.rn-realmediamov: video/quicktimempeg: video/mpegmp4: video/mp43gp: video/3gppflv: video/x-flvavi: video/x-msvideormvb: application/vnd.rn-realmedia-vbrts: video/mp2tasf: video/x-ms-asfmpg: video/…

electron入门(一)环境搭建,实现样例

1、首先需要安装git和node,配置环境变量,确保npm和git命令可用 2、 然后安装依赖 npm install -g electronnpm install -g electron-forgenpm install -g electron-prebuilt-compile3、 创建样例工程 electron-forge init my-new-app # 我这里碰见报错…

qlik为app添加定时调度

1,进入qmc/Apps 2,搜索需要添加调度的APP 3,搜索到后双击点开Tasks 4,新增Tasks---点击Create New 5,添加调度器 6,设置调度,双击新增的调度,注意选择时区

[数据结构]—栈和队列

💓作者简介🎉:在校大二迷茫大学生 💖个人主页🎉:小李很执着 💗系列专栏🎉:数据结构 每日分享✨:到头来,有意义的并不是结果,而是我们度…

阿里云服务器3M固定带宽速度快吗?够用吗?

阿里云服务器3M带宽下载速度是384KB/秒,上传速度是1280KB/s(折合1.25M/秒),3M固定带宽够用吗?对于一般流量不是太大的个人博客、企业官网、论坛社区、小型电商网站或搭建个人学习环境或测试环境是完全够用的&#xff0…

MONGODB 的基础 NOSQL注入基础

首先来学习一下nosql 这里安装就不进行介绍 只记录一下让自己了解mongodb ubuntu 安装后 进入 /usr/bin ./mongodb即可进入然后可通过 进入的url链接数据库 基本操作 show dbshow dbsshow tablesuse 数据库名插入数据db.admin.insert({json格式的数据})例如 db.admin.inse…

低代码!小白用10分钟也能利用flowise构建AIGC| 业务问答 | 文本识别 | 网络爬虫

一、与知识对话 二、采集网页问答 三、部署安装flowise flowise工程地址:https://github.com/FlowiseAI/Flowise flowise 官方文档:https://docs.flowiseai.com/ 这里采用docker安装: step1:克隆工程代码 (如果网络…

leetcode:环形链表

题目描述 题目链接:141. 环形链表 - 力扣(LeetCode) 题目分析 我们先了解一个知识:循环链表 尾结点不指向NULL,指向头就是循环链表 那么带环链表就意味着尾结点的next可以指向链表的任意一个结点,甚至可…

设计模式-单例模式实战

目录 一、引言二、适用场景三、代码实战饿汉式单例模式懒汉式单例模式双重检查锁定单例模式静态内部类单例模式 四、实际应用举例Runtime解析 五、结论 一、引言 单例模式是一种创建型设计模式,用于确保一个类只有一个实例,且提供全局访问点以访问该实例…

「Verilog学习笔记」根据状态转移表实现时序电路

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 分析 可得逻辑表达式为 可得逻辑表达式为 timescale 1ns/1nsmodule seq_circuit(input A ,input clk ,input rst_n,outpu…

阿里云高校计划学生和教师完成认证领取优惠权益

阿里云高校计划学生和教师均可参与,完成学生认证和教师验证后学生可以免费领取300元无门槛代金券和3折优惠折扣,适用于云服务器等全量公共云产品,订单原价金额封顶5000元/年,阿里云百科aliyunbaike.com分享阿里云高校计划入口及学…

error: ‘ui/ui_uimainwindow.h‘ file not found

问题:在刚好创建的Qt Designer Form Class类中,发现类的.cpp文件中有ui头文件未找到 原因:.ui文件没有被识别到,或者.ui文件不存在,导致ui头文件未创建而报错。 解决:若修改了.ui文件,随手ctrls…

python网络通信之基础知识填坑

文章目录 版权声明网络通信要素IP地址ifconfig和ping命令ifconfig (Interface Configuration)ping 端口和端口号的介绍端口号的分类socket介绍TCPTCP简介TCP的特点 UDPUDP简介UDP特点 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明&#…

npm install安装报错

npm WARN notsup Not compatible with your version of node/npm: v-click-outside-x3.7.1 npm ERR! Error while executing: npm ERR! /usr/bin/git ls-remote -h -t ssh://gitgithub.com/itargaryen/simple-hotkeys.git 解决办法1:(没有解决我的问题…

Metis安装(5.0.1与4.0.3)

文章目录 [TOC](文章目录) Metis安装的主要步骤一、选择指定编译器二、指定安装路径三、安装 Metis安装的主要步骤 务必下载指定版本的metis源码,然后进行解压,进入源码的主目录下,在安装之前,通常会要求linux系统上安装了GCC&am…

2023.11.22使用flask做一个简单的图片浏览器

2023.11.22使用flask做一个简单的图片浏览器 功能: 实现图片浏览(翻页)功能 程序页面: 程序架构: 注意:在flask中常会使用src=“{{ url_for(‘static’, filename=‘images/’ + image) }}”,这段代码是在Flask框架中用于获取静态文件的URL的。在Flask中,静态文件…

CSS实现三角形

CSS实现三角形 前言第一种:bordertransparent第二种borderrgb使用unicode字符 前言 本文讲解三种实现三角形的方式,并且配有图文以及代码解说。那么好,本文正式开始。 第一种:bordertransparent border是边框,而transparent是透明的颜色&a…