区间预测 | Matlab实现QRCNN-BiLSTM-Attention分位数回归卷积双向长短期记忆网络注意力机制时序区间预测


目录

  • 区间预测 | Matlab实现QRCNN-BiLSTM-Attention分位数回归卷积双向长短期记忆网络注意力机制时序区间预测
  • 效果一览
  • 基本介绍
  • 程序设计
  • 参考资料


效果一览

区间预测 | Matlab实现QRCNN-BiLSTM-Attention分位数回归卷积双向长短期记忆网络注意力机制时序区间预测_matlab


区间预测 | Matlab实现QRCNN-BiLSTM-Attention分位数回归卷积双向长短期记忆网络注意力机制时序区间预测_matlab_02

区间预测 | Matlab实现QRCNN-BiLSTM-Attention分位数回归卷积双向长短期记忆网络注意力机制时序区间预测_matlab_03

基本介绍

1.Matlab实现基于QRCNN-BiLSTM-Attention分位数回归卷积双向长短期记忆神经网络融合注意力机制的时间序列区间预测模型;

2.多图输出、多指标输出(MAE、MAPE、RMSE、MSE、R2、区间覆盖率、区间平均宽度百分比),单变量时序预测,含不同置信区间图;

3.data为数据集,用过去一段时间的变量,预测下一时刻,适用于负荷预测、风速预测等;main为主程序,其余为函数文件,无需运行;代码质量高,注释清楚;

4.直接替换Excel数据即可用,注释清晰,适合新手小白,直接运行main文件一键出图。

5.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。

该模型的结构和流程如下:

输入的时间序列数据首先经过卷积层,用于提取数据的局部特征。输入到双向LSTM层中。BiLSTM模型包含两个LSTM层,一个正向LSTM和一个反向LSTM。正向LSTM按照时间顺序处理数据,而反向LSTM按照时间逆序处理数据。

BiLSTM层的输出可以连接到一个注意力机制层和全连接层。

最后,全连接层的输出通过输出层进行分位数回归,生成目标变量的预测区间。

区间预测 | Matlab实现QRCNN-BiLSTM-Attention分位数回归卷积双向长短期记忆网络注意力机制时序区间预测_分位数回归_04

程序设计

  • 完整程序和数据获取方式私信博主回复区间预测 | Matlab实现QRCNN-BiLSTM-Attention分位数回归卷积双向长短期记忆网络注意力机制时序区间预测
%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行


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

%%  导入数据
res = xlsread('data.xlsx');

%%  绘图
figure
fill([1 : M, M : -1 : 1], [L_sim1{1}, L_sim1{end}(end : -1 : 1)], ...
    'r', 'FaceColor', [1, 0.8, 0.8], 'EdgeColor', 'none')
hold on 
plot(1 : M, T_train, '-', 1 : M, T_sim1', '-', 'LineWidth', 0.3)
legend('95%的置信区间', '真实值', '预测值')
xlabel('预测样本')
ylabel('预测结果')
string = {'QRCNN-BiLSTM-Attention训练集预测结果对比'; ['RMSE = ' num2str(error1)]};
title(string)
xlim([1, M])
grid

figure
fill([1 : N, N : -1 : 1], [L_sim2{1}, L_sim2{end}(end : -1 : 1)], ...
    'r', 'FaceColor', [1, 0.8, 0.8], 'EdgeColor', 'none')
hold on 
plot(1 : N, T_test, '-', 1 : N, T_sim2', '-', 'LineWidth', 1)
legend('95%的置信区间', '真实值', '预测值')
xlabel('预测样本')
ylabel('预测结果')
string = {'QRCNN-BiLSTM-Attention测试集预测结果对比'; ['RMSE = ' num2str(error2)]};
title(string)
xlim([1, N])
grid