时序预测 | MATLAB实现EEMD-GRU、GRU集合经验模态分解结合门控循环单元时间序列预测对比
目录
效果一览
基本介绍
模型搭建
程序设计
- 完整程序和数据获取方式1:私信博主回复MATLAB实现EEMD-GRU、GRU集合经验模态分解结合门控循环单元时间序列预测对比,同等价值程序兑换;
- 完整程序和数据下载方式2(资源处直接下载):MATLAB实现EEMD-GRU、GRU集合经验模态分解结合门控循环单元时间序列预测对比;
%% 创建混合网络架构
% 输入特征维度
numFeatures = f_;
% 输出特征维度
numResponses = 1;
FiltZise = 10;
%
layers = [...
% 输入特征
sequenceInputLayer([numFeatures 1 1],'Name','input')
sequenceFoldingLayer('Name','fold')
dropoutLayer(0.25,'Name','drop3')
% 全连接层
fullyConnectedLayer(numResponses,'Name','fc')
regressionLayer('Name','output') ];
layers = layerGraph(layers);
layers = connectLayers(layers,'fold/miniBatchSize','unfold/miniBatchSize');
%%
% 批处理样本
MiniBatchSize =128;
% 最大迭代次数
MaxEpochs = 500;
options = trainingOptions( 'adam', ...
'MaxEpochs',500, ...
'GradientThreshold',1, ...
'InitialLearnRate',optVars.InitialLearnRate, ...
'LearnRateSchedule','piecewise', ...
'LearnRateDropPeriod',400, ...
'LearnRateDropFactor',0.2, ...
'L2Regularization',optVars.L2Regularization,...
'Verbose',false, ...
'Plots','none');
%% 训练混合网络
net = trainNetwork(XrTrain,YrTrain,layers,options);
desvio_estandar=std(x);
x=x/desvio_estandar;
xconruido=x+Nstd*randn(size(x));
[modos, o, it]=emd(xconruido,'MAXITERATIONS',MaxIter);
modos=modos/NR;
iter=it;
if NR>=2
for i=2:NR
xconruido=x+Nstd*randn(size(x));
[temp, ort, it]=emd(xconruido,'MAXITERATIONS',MaxIter);
temp=temp/NR;
lit=length(it);
[p liter]=size(iter);
if lit<liter
it=[it zeros(1,liter-lit)];
end;
if liter<lit
iter=[iter zeros(p,lit-liter)];
end;
iter=[iter;it];
[filas columnas]=size(temp);
[alto ancho]=size(modos);
diferencia=alto-filas;
if filas>alto
modos=[modos; zeros(abs(diferencia),ancho)];
end;
if alto>filas
temp=[temp;zeros(abs(diferencia),ancho)];
end;
modos=modos+temp;
end;
end;
its=iter;
modos=modos*desvio_estandar;