clc % 清空命令行
clear % 清空变量
close all % 关闭开启的图窗
warning off % 关闭报警信息
%% 1、读取并分析数据
data = xlsread('feature.xlsx','featuresets'); % 读取Excel中故障特征数据,路径为相对路径,工作簿名称为featuresets
class = length(unique(data(:, end))); % 分类个数
dimension = size(data, 2) - 1; % 特征维度
number = size(data, 1); % 样本数(一行是一个样本)
ratio = 0.75; % 训练集占数据集的比例
data = data(randperm(number), :); % 数据集随机化
flag_conusion = 1; % 打开混淆矩阵
%% 2、样本划分
D_train = []; D_test = []; % 设置训练集和测试集特征数据存储
L_train = []; L_test = []; % 设置训练集和测试集标签数据存储
for i = 1 : class
mid_res = data((data(:, end) == i), :); % 循环取出不同类别的样本
mid_size = size(mid_res, 1); % 得到不同类别样本个数
mid_train = round(ratio * mid_size); % 得到该类别的训练样本个数
D_train = [D_train; mid_res(1: mid_train, 1: end - 1)]; % 训练集输入
L_train = [L_train; mid_res(1: mid_train, end)]; % 训练集输出
D_test = [D_test; mid_res(mid_train + 1: end, 1: end - 1)]; % 测试集输入
L_test = [L_test; mid_res(mid_train + 1: end, end)]; % 测试集输出
end
%% 3、数据预处理
D_train = D_train'; D_test = D_test'; % 数据转置
L_train = L_train'; L_test = L_test';
M = size(D_train, 2); % 得到训练集样本数
N = size(D_test , 2); % 得到测试集样本数
[D_train, ps_input] = mapminmax(D_train, 0, 1); % 训练集数据归一化
D_test = mapminmax('apply', D_test, ps_input); % 测试集数据归一化
t_train = categorical(L_train)'; % 训练集标签转为categorical
t_test = categorical(L_test )'; % 测试集标签转为categorical
D_train = double(reshape(D_train, dimension, 1, 1, M)); % 训练集数据数据平铺
D_test = double(reshape(D_test , dimension, 1, 1, N)); % 测试集数据数据平铺
%% 4、构造CNN网络结构
layers = [
imageInputLayer([dimension, 1, 1]) % 输入层
convolution2dLayer([3, 1], 8,'Padding','same') % 8个卷积核,大小为3*1
batchNormalizationLayer % 批归一化层
reluLayer % relu激活层
maxPooling2dLayer([2, 1], 'Stride', 2) % 最大池化层,大小为2*1,步长为2
% dropoutLayer(0.2) % 丢弃层
convolution2dLayer([3, 1], 16,'Padding','same') % 16个卷积核,大小为3*1
batchNormalizationLayer % 批归一化层
reluLayer % relu激活层
maxPooling2dLayer([2, 1], 'Stride', 2) % 最大池化层,大小为2*1,步长为2
% dropoutLayer(0.2) % 丢弃层
convolution2dLayer([3, 1], 32,'Padding','same') % 32个卷积核,大小为2*1
batchNormalizationLayer % 批归一化层
reluLayer % relu激活层
maxPooling2dLayer([2, 1], 'Stride', 2) % 最大池化层,大小为2*2,步长为2
fullyConnectedLayer(class) % 全连接层(类别数)
dropoutLayer(0.2) % 丢弃层
softmaxLayer % 损失函数层
classificationLayer]; % 分类层
%% 5、网络参数设置
options = trainingOptions('adam', ... % Adam梯度下降算法
'MaxEpochs', 500, ... % 最大训练次数500
'InitialLearnRate', 1e-2, ... % 初始学习率为0.01
'L2Regularization', 1e-04, ... % L2正则化参数
'LearnRateSchedule', 'piecewise', ... % 学习率下降
'LearnRateDropFactor', 0.5, ... % 学习率下降因子0.5
'LearnRateDropPeriod', 600, ... % 经过600次训练后 学习率为 0.01*0.5
'Shuffle', 'every-epoch', ... % 每次训练打乱数据集
'ValidationPatience', Inf, ... % 关闭验证
'Plots', 'training-progress', ... % 画出曲线
'MiniBatchSize', 256, ... % 批大小
'Verbose', false);
%% 5、CNN模型训练
net = trainNetwork(D_train, t_train, layers, options);
%% 6、结果预测
t_sim1 = predict(net, D_train);
t_sim2 = predict(net, D_test );
T_sim1 = vec2ind(t_sim1'); % 反归一化
T_sim2 = vec2ind(t_sim2');
error1 = sum((T_sim1 == L_train)) / M * 100 ; % 性能评价
error2 = sum((T_sim2 == L_test )) / N * 100 ;
analyzeNetwork(net) % 查看网络
%% 7、绘图查看分类结果
figure(1)
plot(1: M, L_train, 'r-*', 1: M, T_sim1, 'b-o', 'LineWidth', 1)
legend('真实值', '预测值')
xlabel('预测样本');ylabel('预测结果');
string = {'训练集预测结果对比'; ['准确率=' num2str(error1) '%']};
title(string)
grid
figure(2)
plot(1: N, L_test, 'r-*', 1: N, T_sim2, 'b-o', 'LineWidth', 1)
legend('真实值', '预测值')
xlabel('预测样本');ylabel('预测结果');
string = {'测试集预测结果对比'; ['准确率=' num2str(error2) '%']};
title(string)
grid
%% 8、混淆矩阵
if flag_conusion == 1
figure(3)
cm = confusionchart(L_train, T_sim1);
cm.Title = 'Confusion Matrix for Train Data';
cm.ColumnSummary = 'column-normalized';
cm.RowSummary = 'row-normalized';
figure(4)
cm = confusionchart(L_test, T_sim2);
cm.Title = 'Confusion Matrix for Test Data';
cm.ColumnSummary = 'column-normalized';
cm.RowSummary = 'row-normalized';
end
没有合适的资源?快使用搜索试试~ 我知道了~
CNN分类基于matlab深度学习CNN故障诊断分类【含Matlab源码 3312期】.zip
共6个文件
jpg:4个
xlsx:1个
m:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 3 下载量 104 浏览量
2023-10-28
20:13:18
上传
评论 4
收藏 302KB ZIP 举报
温馨提示
CSDN海神之光上传的全部代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:Main .m; 数据; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开除Main.m的其他m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博主博客文章底部QQ名片; 4.1 CSDN博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 智能优化算法优化CNN卷积神经网络分类预测系列程序定制或科研合作方向: 4.4.1 遗传算法GA/蚁群算法ACO优化CNN 4.4.2 粒子群算法PSO/蛙跳算法SFLA优化CNN 4.4.3 灰狼算法GWO/狼群算法WPA优化CNN 4.4.4 鲸鱼算法WOA/麻雀算法SSA优化CNN 4.4.5 萤火虫算法FA/差分算法DE优化CNN
资源推荐
资源详情
资源评论
收起资源包目录
【CNN分类】基于matlab深度学习CNN故障诊断分类【含Matlab源码 3312期】.zip (6个子文件)
【CNN分类】基于matlab深度学习CNN故障诊断分类【含Matlab源码 3312期】
运行结果1.jpg 41KB
feature.xlsx 175KB
CNN.m 6KB
运行结果2.jpg 48KB
运行结果4.jpg 35KB
运行结果3.jpg 34KB
共 6 条
- 1
资源评论
- zyh_Bjut2023-11-13超级好的资源,很值得参考学习,对我启发很大,支持!
- Sxzwyzrq2024-05-13资源内容详尽,对我有使用价值,谢谢资源主的分享。
- shijue_2024-03-19这个资源对我启发很大,受益匪浅,学到了很多,谢谢分享~
海神之光
- 粉丝: 5w+
- 资源: 6110
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- js基础但是这个烂怂东西要求标题不能少于10个字才能上传然后我其实还没有写完之后再修订吧.md
- electron-tabs-master
- Unity3D 布朗运动算法插件 Brownian Motion
- 鼎微R16中控升级包R16-4.5.10-20170221及强制升级方法
- 鼎微R16中控升级包公版UI 2015及强制升级方法,救砖包
- 基于CSS与JavaScript的积分系统设计源码
- 生物化学作业_1_生物化学作业资料.pdf
- 基于libgdx引擎的Java开发连连看游戏设计源码
- 基于MobileNetV3的SSD目标检测算法PyTorch实现设计源码
- 基于Java JDK的全面框架设计源码学习项目
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功