当前位置: 首页 > news >正文

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.lryc.cn/news/239753.html

相关文章:

  • 基于go-zero的rpc服务示例
  • 【算法】奇偶游戏(带权并查集)
  • 补充:linux rsyslog配置多端口监听(基于UDP)
  • 详解StringBuilder和StringBuffer(区别,使用方法,含源码讲解)
  • 九、sdl显示bmp图片
  • ROS设置DHCP option121
  • ④【Set】Redis常用数据类型: Set [使用手册]
  • 助力企业前行——ScalaSpark最佳实践课程
  • pikachu靶场Table pikachu.member doesn’t exist:解决
  • Github Copilot AI编码完成工具
  • android 9 adb安装过程学习(二)
  • Java面试-框架篇-Mybatis
  • java基础-集合
  • 【C++11】auto与decltype关键字使用详解
  • Servlet实现一个简单的表白墙网站
  • mysql 集群恢复
  • 基于STM32的色彩识别与分类算法优化
  • 阿里云发送短信
  • 关于用css设置input输入框hover的时候的样式以及当input为disabled的时候,不要让hover样式生效
  • hadoop在本地创建文件,然后将文件拷贝/上传到HDFS
  • NFC:应用场景广泛的短距离通信技术
  • CentOS使用docker安装OpenGauss数据库
  • 原理Redis-QuickList
  • js双击修改元素内容并提交到后端封装实现
  • Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署
  • 在中国企业出海的大浪潮下,亚马逊云科技提供遍及全球的基础设施和技术支持
  • 前端如何判空
  • 基于SSM的焦作旅游协会管理系统设计与实现
  • 庖丁解牛:NIO核心概念与机制详解 07 _ 字符集
  • ansible的基本安装