基于卷积神经网络的多输出数据回归预测CNN(多输入多输出)
一、作品详细简介
1.1附件文件夹程序代码截图
全部完整源代码,请在个人首页置顶文章查看:
学行库小秘_CSDN博客编辑https://blog.csdn.net/weixin_47760707?spm=1000.2115.3001.5343
1.2各文件夹说明
1.2.1 main.m主函数文件
这段 MATLAB 代码实现了一个基于卷积神经网络(CNN)的回归模型,用于处理具有 28 个输入特征和 3 个输出目标的数据集。
以下是详细的步骤解释:
1. 数据导入与划分
数据维度:输入特征 28 列,输出目标 3 列
- 随机划分:randperm 确保数据随机性,避免顺序偏差
- 转置操作:将样本从列向量转为行向量(适应后续处理)
2. 数据预处理
- 归一化目的:加速收敛,防止数值溢出
- 关键操作:reshape 将 1D 特征转换为 2D 图像格式(高度28,宽度1,通道1)
- 维度说明:CNN 要求输入为 [height, width, channels, samples]
3. CNN 网络架构
- 结构特点:
- 3 个卷积层(特征提取)→ 2 个池化层(降维)→ 2 个全连接层(回归)
- 使用批归一化加速训练并提高稳定性
- ReLU 激活函数引入非线性
- 输入输出:28×1 → 最终输出 3 个连续值(回归问题)
4. 训练配置
- 优化器:Adam(自适应矩估计)
- 学习率策略:150 轮后降为 0.0001(0.001×0.1)
- 批训练:每次 64 个样本,平衡效率与内存
5. 模型训练与预测
- trainNetwork:执行端到端的 CNN 训练
- predict:用训练好的模型进行预测
- 反归一化:将预测值转换回原始数据范围
6. 性能评估与可视化
- 评估指标:
- RMSE:误差的均方根(越小越好)
- R²:决定系数(越接近1越好)
- MAE:绝对误差平均值(鲁棒性强)
- MBE:预测偏差平均值(指示系统偏差)
- 可视化:每个输出单独绘制训练/测试集真实值与预测值对比曲线
技术亮点总结
- 一维卷积应用:将 28 维特征视为 28×1 的"图像",利用 CNN 提取局部特征
- 批归一化:每个卷积层后加入 BN 层,显著提升训练稳定性
- 动态学习率:采用分段衰减策略(150 epoch 后降至 1/10)
- 多目标回归:同时预测 3 个相关输出变量
- 全面评估:计算 RMSE/R²/MAE/MBE 四类指标,多角度验证性能
注意:该模型适用于输入特征具有空间/序列相关性的数据(如传感器信号、时间序列等),通过卷积操作捕捉局部依赖关系。
图2 main.m主函数文件部分代码
1.2.2 数据集文件
数据集为Excel数据csv格式文件,可以方便地直接替换为自己的数据运行程序。原始数据文件包含28列特征列数据和3列输出标签列数据,一共包含719条样本数据,具体如图所示。
二、代码运行结果展示
该代码实现了一个基于卷积神经网络(CNN)的多目标回归预测模型。
首先,代码导入包含719个样本的数据集,随机划分500个样本作为训练集、219个样本作为测试集,并对28维输入特征和3维输出目标进行归一化处理,同时将数据重塑为CNN所需的4D张量格式;
其次,构建包含三个卷积层(核尺寸2×1)、批归一化层、ReLU激活层、池化层和全连接层的CNN架构,配置Adam优化器及动态学习率策略进行模型训练;
最后,对训练集和测试集进行预测,通过反归一化还原预测值,计算每个输出维度的RMSE、R²、MAE和MBE四类评估指标,并绘制预测结果对比图进行可视化分析。
三、注意事项:
1.程序运行软件推荐Matlab 2018B版本及以上;
2.所有程序都经过验证,保证程序可以运行。此外程序包含简要注释,便于理解。
3.如果不会运行,可以帮忙远程运行原始程序以及讲解和其它售后,该服务需另行付费。
4. 代码包含详细的文件说明,以及对每个程序文件的功能注释,说明详细清楚。
5.Excel数据,可直接修改数据,替换数据后直接运行即可。