时序预测 | Matlab实现EEMD-SSA-BiLSTM、EEMD-BiLSTM、SSA-BiLSTM、BiLSTM时序预测对比
请尊重原创劳动成果
转载请注明本文链接
及文章作者:机器学习之心
预测效果
使用教程
1 基本介绍
1.Matlab实现EEMD-SSA-BiLSTM、EEMD-BiLSTM、SSA-BiLSTM、BiLSTM时间序列预测对比,集合经验模态分解结合麻雀算法优化双向长短期记忆神经网络、集合经验模态分解结合双向长短期记忆神经网络、麻雀算法优化双向长短期记忆神经网络、双向长短期记忆神经网络时间序列预测对比。
2.EEMD-SSA-BiLSTM是一种基于集合经验模态分解(EEMD)、麻雀算法(SSA)和双向长短期记忆神经网络(BiLSTM)的时间序列预测方法;
首先,使用EEMD方法对原始时间序列进行分解,得到多个固有模态函数(IMF)。然后,使用SSA算法对每个IMF进行优化,得到最优的模型参数。最后,将所有IMF的预测结果相加得到最终的预测结果。.EEMD-SSA-BiLSTM方法的优点是能够充分挖掘时间序列的非线性和非平稳特征,并且能够自适应地对每个IMF进行优化,提高了预测的准确性和鲁棒性,可以应用于各种时间序列预测问题,例如股票价格预测、气象数据预测、交通流量预测等。
3.运行环境Matlab2018b及以上,运行每个子文件夹的main即可,excel数据,方便替换;
2 网络结构
设置网络参数
fs=1;
%计算每个IMF分量及最后一个剩余分量residual与原始信号的相关性
[m,n]=size(c);% %size()函数返回矩阵的行数和列数
%% 画出分解图
%画出每个IMF分量及最后一个剩余分量residual的图形
figure(1)
subplot(m+1,1,1) %m=5,分解得到5个IMF分量
plot(t,f)
%set(gca,'fontname','times New Roman')%表明字体等,可不用
%set(gca,'fontsize',14.0)
ylabel(['原始信号'])
%画出imf[i]的图形
for i=1:m-1
subplot(m+1,1,i+1);
set(gcf,'color','w')
plot(t,c(i,:),'k')
set(gca,'fontname','times New Roman')
%set(gca,'fontsize',14.0)
ylabel(['imf',int2str(i)]) %显示IMF1,2,3,4
end
%画残余分量
figure(1)
subplot(m+1,1,m+1);
set(gcf,'color','w')
plot(t,c(m,:),'k')
set(gca,'fontname','times New Roman')
%set(gca,'fontsize',14.0)
ylabel('res')
%% 分解完成
imf=c(2:end,:); %取出imf分量
%% EEMD-SSA-BiLSTM预测
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));
完整代码
注意:
class
% @author : 机器学习之心
% 完整代码:https://mbd.pub/o/bread/mbd-ZZmXlJ9p
% @author : 机器学习之心
end
完
属实不易,如果有用请留个赞
叭~
未经允许本代码请勿作商业用途!!!