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_trainp_test 分别是训练集和测试集的输入数据,t_sim1t_sim2 分别是对训练集和测试集的预测结果。

完整的代码和数据见

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

相关推荐
好开心啊没烦恼7 分钟前
Python 数据分析:计算,分组统计1,df.groupby()。听故事学知识点怎么这么容易?
开发语言·python·数据挖掘·数据分析·pandas
lljss20201 小时前
Python11中创建虚拟环境、安装 TensorFlow
开发语言·python·tensorflow
Python×CATIA工业智造4 小时前
Frida RPC高级应用:动态模拟执行Android so文件实战指南
开发语言·python·pycharm
千宇宙航4 小时前
闲庭信步使用SV搭建图像测试平台:第三十一课——基于神经网络的手写数字识别
图像处理·人工智能·深度学习·神经网络·计算机视觉·fpga开发
IT古董4 小时前
【第二章:机器学习与神经网络概述】04.回归算法理论与实践 -(4)模型评价与调整(Model Evaluation & Tuning)
神经网络·机器学习·回归
我叫小白菜5 小时前
【Java_EE】单例模式、阻塞队列、线程池、定时器
java·开发语言
狐凄5 小时前
Python实例题:基于 Python 的简单聊天机器人
开发语言·python
weixin_446122466 小时前
JAVA内存区域划分
java·开发语言·redis
悦悦子a啊6 小时前
Python之--基本知识
开发语言·前端·python
QuantumStack7 小时前
【C++ 真题】P1104 生日
开发语言·c++·算法