读完需要
速读仅需 2 分钟
请尊重原创劳动成果
转载请注明本文链接
及文章作者:机器学习之心
摘要:分解+熵值+降维+对比!超酷故障诊断!EEMD-MPE-KPCA-GRU、EEMD-MPE-GRU、EEMD-PE-GRU模型
1
基本介绍
参考文献
2
数据集
2.2
运行效果
完整代码链接:https://mbd.pub/o/bread/mbd-Z5WXk5Zs
也可扫描二维码:
3
%% 清空环境变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行
%% EEMD-PE
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) % 输入层
Layer(150, 'OutputMode', 'last')
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'); % 画出曲线
4
嗯,细心的你会发现:https://mbd.pub/o/slowtrain/work
博客专家认证,机器学习领域创作者,2023博客之星TOP50,主做机器学习和深度学习时序、回归、分类、聚类和降维等程序设计和案例分析。科研课题模型定制/横向项目模型仿真/职称学术论文辅导/模型程序讲解均可联系本人唯一QQ1153460737(其他均为盗版,注意甄别)
技术交流群:购买博主任意代码或分享博主博文到任意三方平台后即可添加博主QQ进群