【CNN分类】基于卷积神经网络的数据分类附matlab代码

简介: 【CNN分类】基于卷积神经网络的数据分类附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

基于卷积神经网络(Convolutional Neural Network, CNN)的数据分类是一种常见的机器学习任务。CNN图像分类、语音识别等领域取得了很大的成功。

下面是基于CNN的数据分类的基本步骤:

  1. 数据准备:收集和准备用于训练和测试的数据集。数据集应包含有标记的样本,即每个样本都有对应的类别标签。
  2. 数据预处理:对数据进行预处理,包括图像的缩放、裁剪、灰度化等操作,以使其适应CNN的输入要求。
  3. 构建CNN模型:设计并构建一个CNN模型,通常包括卷积层、池化层、全连接层等组件。可以根据具体任务和数据集的特点进行模型的设计和调整。
  4. 模型训练:使用训练数据集对CNN模型进行训练。通过反向传播算法和优化算法(如随机梯度下降)来更新模型的权重和偏置,使其逐渐适应训练数据。
  5. 模型评估:使用测试数据集对训练好的CNN模型进行评估。计算模型在测试集上的准确率、精确率、召回率等指标,评估模型的性能。
  6. 模型优化:根据评估结果对CNN模型进行优化。可以尝试调整模型的结构、超参数(如学习率、批大小等)或采用正则化技术(如dropout、L2正则化)来提高模型的性能。
  7. 模型应用:使用优化后的CNN模型对新的未标记数据进行分类预测。

需要注意的是,CNN的成功应用还依赖于合适的数据集、适当选择的模型架构和参数调整,以及充足的计算资源和训练时间。在实际应用中,还需要注意数据集的质量和规模,以及模型的泛化能力和鲁棒性。


⛄ 代码

%%  清空环境变量warning off             % 关闭报警信息close all               % 关闭开启的图窗clear                   % 清空变量clc                     % 清空命令行%%  导入数据res = xlsread('数据集.xlsx');%%  划分训练集和测试集temp = randperm(357);P_train = res(temp(1: 240), 1: 12)';T_train = res(temp(1: 240), 13)';M = size(P_train, 2);P_test = res(temp(241: end), 1: 12)';T_test = res(temp(241: end), 13)';N = size(P_test, 2);%%  数据归一化[P_train, ps_input] = mapminmax(P_train, 0, 1);P_test  = mapminmax('apply', P_test, ps_input);t_train =  categorical(T_train)';t_test  =  categorical(T_test )';%%  数据平铺%   将数据平铺成1维数据只是一种处理方式%   也可以平铺成2维数据,以及3维数据,需要修改对应模型结构%   但是应该始终和输入层数据结构保持一致p_train =  double(reshape(P_train, 12, 1, 1, M));p_test  =  double(reshape(P_test , 12, 1, 1, N));%%  构造网络结构layers = [ imageInputLayer([12, 1, 1])                                % 输入层  convolution2dLayer([2, 1], 16, 'Padding', 'same')          % 卷积核大小为 2*1 生成16个卷积 batchNormalizationLayer                                    % 批归一化层 reluLayer                                                  % relu 激活层  maxPooling2dLayer([2, 1], 'Stride', [2, 1])                % 最大池化层 大小为 2*1 步长为 [2, 1] convolution2dLayer([2, 1], 32, 'Padding', 'same')          % 卷积核大小为 2*1 生成32个卷积 batchNormalizationLayer                                    % 批归一化层 reluLayer                                                  % relu 激活层 fullyConnectedLayer(4)                                     % 全连接层(类别数)  softmaxLayer                                               % 损失函数层 classificationLayer];                                      % 分类层%%  参数设置options = trainingOptions('adam', ...      % Adam 梯度下降算法    'MaxEpochs', 500, ...                  % 最大训练次数 500    'InitialLearnRate', 1e-3, ...          % 初始学习率为 0.001    'L2Regularization', 1e-4, ...          % L2正则化参数    'LearnRateSchedule', 'piecewise', ...  % 学习率下降    'LearnRateDropFactor', 0.1, ...        % 学习率下降因子 0.1    'LearnRateDropPeriod', 400, ...        % 经过450次训练后 学习率为 0.001 * 0.1    'Shuffle', 'every-epoch', ...          % 每次训练打乱数据集    'ValidationPatience', Inf, ...         % 关闭验证    'Plots', 'training-progress', ...      % 画出曲线    'Verbose', false);%%  训练模型net = trainNetwork(p_train, t_train, layers, options);%%  预测模型t_sim1 = predict(net, p_train); t_sim2 = predict(net, p_test ); %%  反归一化T_sim1 = vec2ind(t_sim1');T_sim2 = vec2ind(t_sim2');%%  性能评价error1 = sum((T_sim1 == T_train)) / M * 100 ;error2 = sum((T_sim2 == T_test )) / N * 100 ;%%  绘制网络分析图analyzeNetwork(layers)%%  数据排序[T_train, index_1] = sort(T_train);[T_test , index_2] = sort(T_test );T_sim1 = T_sim1(index_1);T_sim2 = T_sim2(index_2);%%  绘图figureplot(1: M, T_train, 'r-*', 1: M, T_sim1, 'b-o', 'LineWidth', 1)legend('真实值', '预测值')xlabel('预测样本')ylabel('预测结果')string = {'训练集预测结果对比'; ['准确率=' num2str(error1) '%']};title(string)xlim([1, M])gridfigureplot(1: N, T_test, 'r-*', 1: N, T_sim2, 'b-o', 'LineWidth', 1)legend('真实值', '预测值')xlabel('预测样本')ylabel('预测结果')string = {'测试集预测结果对比'; ['准确率=' num2str(error2) '%']};title(string)xlim([1, N])grid%%  混淆矩阵figurecm = confusionchart(T_train, T_sim1);cm.Title = 'Confusion Matrix for Train Data';cm.ColumnSummary = 'column-normalized';cm.RowSummary = 'row-normalized';    figurecm = confusionchart(T_test, T_sim2);cm.Title = 'Confusion Matrix for Test Data';cm.ColumnSummary = 'column-normalized';cm.RowSummary = 'row-normalized';

⛄ 运行结果

⛄ 参考文献

[1] 张兆晨,冀俊忠.基于卷积神经网络的fMRI数据分类方法[J].模式识别与人工智能, 2017, 30(6):10.DOI:10.16451/j.cnki.issn1003-6059.201706008.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料

🍅 仿真咨询

1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面

卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

2.图像处理方面

图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

3 路径规划方面

旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

4 无人机应用方面

无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

5 无线传感器定位及布局方面

传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

6 信号处理方面

信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

7 电力系统方面

微电网优化、无功优化、配电网重构、储能配置

8 元胞自动机方面

交通流 人群疏散 病毒扩散 晶体生长

9 雷达方面

卡尔曼滤波跟踪、航迹关联、航迹融合





相关文章
|
3天前
|
机器学习/深度学习 存储 监控
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
11 0
|
1天前
|
人工智能 数据可视化
【数据分享】维基百科Wiki负面有害评论(网络暴力)文本数据多标签分类挖掘可视化
【数据分享】维基百科Wiki负面有害评论(网络暴力)文本数据多标签分类挖掘可视化
11 2
|
2天前
|
机器学习/深度学习 算法 TensorFlow
【视频】神经网络正则化方法防过拟合和R语言CNN分类手写数字图像数据MNIST|数据分享
【视频】神经网络正则化方法防过拟合和R语言CNN分类手写数字图像数据MNIST|数据分享
|
2天前
|
机器学习/深度学习 算法 计算机视觉
m基于Yolov2深度学习网络的人体喝水行为视频检测系统matlab仿真,带GUI界面
MATLAB 2022a中使用YOLOv2算法对avi视频进行人体喝水行为检测,结果显示成功检测到目标。该算法基于全卷积网络,通过特征提取、锚框和损失函数优化实现。程序首先打乱并分割数据集,利用预训练的ResNet-50和YOLOv2网络结构进行训练,最后保存模型。
13 5
|
5天前
|
机器学习/深度学习 传感器 数据可视化
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
21 1
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
|
11天前
|
机器学习/深度学习 数据采集 TensorFlow
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
29 0
|
2月前
|
机器学习/深度学习 编解码 PyTorch
Pytorch实现手写数字识别 | MNIST数据集(CNN卷积神经网络)
Pytorch实现手写数字识别 | MNIST数据集(CNN卷积神经网络)
|
1月前
|
机器学习/深度学习 算法 数据库
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
|
4月前
|
机器学习/深度学习
CNN卷积神经网络手写数字集实现对抗样本与对抗攻击实战(附源码)
CNN卷积神经网络手写数字集实现对抗样本与对抗攻击实战(附源码)
39 0
|
2月前
|
机器学习/深度学习 测试技术 Ruby
YOLOv5改进 | 主干篇 | 反向残差块网络EMO一种轻量级的CNN架构(附完整代码 + 修改教程)
YOLOv5改进 | 主干篇 | 反向残差块网络EMO一种轻量级的CNN架构(附完整代码 + 修改教程)
132 2