时序预测 | Matlab实现EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM时间序列预测对比

文摘   教育   2024-11-23 21:58   广东  

时序预测 | Matlab实现EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM时间序列预测对比

请尊重原创劳动成果
转载请注明本文链接
及文章作者:机器学习之心

点击阅读原文或复制以下链接到浏览器获取文章完整源码和数据:
https://mbd.pub/o/bread/mbd-ZZeVk5dq

预测效果


使教程

1 基本介绍

1.Matlab实现EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM时间序列预测对比,集合经验模态分解结合麻雀算法优化长短期记忆神经网络、集合经验模态分解结合长短期记忆神经网络、麻雀算法优化长短期记忆神经网络、长短期记忆神经网络时间序列预测对比

2.EEMD-SSA-LSTM是一种基于集合经验模态分解(EEMD)、麻雀算法(SSA)和长短期记忆神经网络(LSTM)的时间序列预测方法;

首先,使用EEMD方法对原始时间序列进行分解,得到多个固有模态函数(IMF)。然后,使用SSA算法对每个IMF进行优化,得到最优的模型参数。最后,将所有IMF的预测结果相加得到最终的预测结果。.EEMD-SSA-LSTM方法的优点是能够充分挖掘时间序列的非线性和非平稳特征,并且能够自适应地对每个IMF进行优化,提高了预测的准确性和鲁棒性,可以应用于各种时间序列预测问题,例如股票价格预测、气象数据预测、交通流量预测等。

3.运行环境Matlab2018b及以上,运行每个子文件夹的main即可。

2 网络结构


设置网络参数


%% 分解完成imf=c(2:end,:); %取出imf分量%% EEMD-SSA-LSTM预测pre_result2=[];pre_result1=[];for i=1:size(imf,1)disp(['对第',num2str(i),'个分量建模'])[x,y]=data_process(imf(i,:),step);   %步长为12%归一化%% 划分数据n=size(x,1);m=round(n*0.7);        %前70%训练,对最后30%进行预测P_train=x(1:m,:)';P_test=x(m+1:end,:)';T_train=y(1:m,:)';T_test=y(m+1:end,:)';%%  划分训练集和测试集M = size(P_train, 2);N = size(P_test, 2);
%% 数据归一化[P_train, ps_input] = mapminmax(P_train, 0, 1);P_test = mapminmax('apply', P_test, ps_input);
[t_train, ps_output] = mapminmax(T_train, 0, 1);t_test = mapminmax('apply', T_test, ps_output);
%% 数据平铺% 将数据平铺成1维数据只是一种处理方式% 也可以平铺成2维数据,以及3维数据,需要修改对应模型结构% 但是应该始终和输入层数据结构保持一致P_train = double(reshape(P_train,step, 1, 1, M));P_test = double(reshape(P_test ,step, 1, 1, N));
t_train = t_train';t_test = t_test' ;
%% 数据格式转换for j = 1 : M p_train{j, 1} = P_train(:, :, 1, j);end
for k = 1 : N p_test{k, 1} = P_test( :, :,1, k);end
%% 优化函数fobj = @(x)fical(x);%% 优化算法参数设置pop = 5; % 数量Max_iter = 10; % 最大迭代次数dim = 3; % 优化参数个数lb = [1e-5, 32, 1e-5]; % 参数取值下界(学习率,隐藏层节点,正则化系数)ub = [1e-1, 128, 1e-1]; % 参数取值上界(学习率,隐藏层节点,正则化系数)

完整代码

注意:

class
% @author : 机器学习之心
% 完整代码:https://mbd.pub/o/bread/mbd-ZZeVk5dq

% @author : 机器学习之心

end

属实不易,如果有用请留个叭~

未经允许本代码请勿作商业用途


机器学习之心HML
机器学习和深度学习时序、回归、分类和聚类等程序设计与案例分析,CSDN博主机器学习之心,知乎、B站同名,由于博主公众号名称被别人占用,故加了HML,此号是官方账号,其余打着本人旗号做事本人概不负责,本人QQ1153460737。
 最新文章