EEMD-MPE-KPCA-BiLSTM、EEMD-MPE-BiLSTM、EEMD-PE-BiLSTM故障识别、诊断(Matlab)

EEMD-MPE-KPCA-BiLSTM(集合经验分解-多尺度排列熵-核主元分析-双向长短期网络)故障识别、诊断(Matlab)

效果一览

在这里插入图片描述

基本介绍

EEMD-MPE-KPCA-BiLSTM(集合经验模态分解-多尺度排列熵-核主元分析-双向长短期记忆网络)用于故障识别、诊断(Matlab完整源码和数据)运行环境matlab2023b
1.所用数据集为西安交通大学轴承故障数据集4个故障类别分别为
35HZCage(122条样本)35HZOuter race(123条样本)37.5HZOuter race(161条样本)40HZOuter race(114条样本)
选取每个故障的水平信号并截取前2000个信号点,即共520条样本每条样本长度为2000
2.程序流程
(1)对520条样本分别采用EEMD进行分解通过判定所有分解信号样本熵值,并重构为高中低3个频段信号
(2)对高中低信号分解进行多尺度排列熵计算并合成,最后得到每条样本的特征向量
(3)对每条样本特征向量进行kpca降维
(3)将数据导入至BILSTM进行分类/故障识别
3.对照组
eemd-pe-bilstm、eemd-mpe-bilstm
精度对比有分类散点图、混淆矩阵、精确率、召回率、调和平均数

程序设计



%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行

%% EEMD-PE-bilstm
load ('eemddata','X1','X2')
load('kpcadata','Y')

data = X1;%%生成pe数据集
%输入输出数据
input=data(:,1:end-1);    %data的第一列-倒数第二列为特征指标
output=data(:,end);  %data的最后面一列为标签类型

N=length(output);   %全部样本数目
testNum=0.2*N;   %设定测试样本数目
trainNum=N-testNum;    %计算训练样本数目

%训练集、测试集
P_train = input(1:trainNum,:)';
T_train =output(1:trainNum)';
P_test =input(trainNum+1:trainNum+testNum,:)';
T_test =output(trainNum+1:trainNum+testNum)';
num_class = length(unique(data(:, end)));  % 类别数(Excel最后一列放类别) 


t_train =  categorical(T_train)';
t_test  =  categorical(T_test )';

% 数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax('apply', P_test, ps_input );
%  格式转换
for i = 1 : trainNum
    pp_train{i, 1} = p_train(:, i);
end

for i = 1 : testNum
    pp_test{i, 1} = p_test(:, i);
end

%  创建网络
numFeatures = size(P_train, 1);               % 特征维度
numResponses = num_class;

layers = [ ...
  sequenceInputLayer(numFeatures)                  % 输入层
  bilstmLayer(150, 'OutputMode', 'last')         %  bilstm层%%调整神经元个数
  reluLayer                                    % Relu 激活层
  fullyConnectedLayer(numResponses)               % 全连接层数等于分类数
  softmaxLayer                                 % 损失函数层
  classificationLayer];                        % 分类层

% 参数设置
checkpointPath = pwd;
options = trainingOptions('adam', ...                 % 优化算法Adam
    'MaxEpochs', 200, ...                             % 最大训练次数
    'GradientThreshold', 1, ...                       % 梯度阈值
    'InitialLearnRate', 0.03, ...                    % 初始学习率
    'LearnRateSchedule', 'piecewise', ...             % 学习率调整
    'LearnRateDropPeriod', 200, ...                   % 训练700次后开始调整学习率
    'LearnRateDropFactor',0.2, ...                    % 学习率调整因子
    'ExecutionEnvironment', 'cpu',...                 % 训练环境
    'Verbose', 0, ...                                 % 关闭优化过程
    'Plots', 'training-progress');                    % 画出曲线

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/128163536?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/128151206?spm=1001.2014.3001.5502

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器学习之心

谢谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值