区间预测 | MATLAB实现基于QRCNN-LSTM卷积长短期记忆神经网络多变量时间序列区间预测

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: 区间预测 | MATLAB实现基于QRCNN-LSTM卷积长短期记忆神经网络多变量时间序列区间预测

区间预测 | MATLAB实现基于QRCNN-LSTM卷积长短期记忆神经网络多变量时间序列区间预测

@TOC

效果一览

image.png

image.png
image.png
image.png

基本介绍

1.Matlab实现基于QRCNN-LSTM卷积神经网络结合长短期记忆神经网络多变量时间序列区间预测;
2.多图输出、点预测多指标输出(MAE、MAPE、RMSE、MSE、R2),区间预测多指标输出(区间覆盖率PICP、区间平均宽度百分比PINAW),多输入单输出,含点预测图、不同置信区间预测图、误差分析图、核密度估计概率密度图;
3.data为数据集,功率数据集,用多个关联变量,预测最后一列功率数据,也可适用于负荷预测、风速预测;MainQRCNN_LSTMNTS为主程序,其余为函数文件,无需运行;
4.代码质量高,注释清楚,含数据预处理部分,处理缺失值,如果为nan,则删除,也含核密度估计;
5.运行环境Matlab2021及以上。

模型描述

卷积长短期记忆神经网络是一种结合了卷积神经网络和长短期记忆神经网络的模型,能够对时间序列数据进行建模和预测。多变量时间序列区间预测是指对多个变量在一定时间范围内的进行预测。
下面是一个基本的卷积LSTM模型的示例,用于多变量时间序列区间预测:
数据准备:将多个变量作为模型的输入,组成一个三维张量,其中第一维表示时间步,第二维表示变量,第三维表示特征。
模型构建:模型包括卷积层、LSTM层和全连接层。卷积层用于提取时间序列中的局部特征,LSTM层用于捕捉序列中的长期依赖关系,全连接层用于将LSTM层的输出转换为所需的预测结果。
模型训练:使用已知的时间序列数据进行模型训练,并在验证集上进行验证。可以使用均方误差(Mean Squared Error,MSE)或平均绝对误差(Mean Absolute Error,MAE)等指标来评估模型的性能。
模型预测:使用已训练的模型对未来一定时间范围内的多个变量进行预测。
需要注意的是,卷积LSTM模型的预测结果可能会受到多个因素的影响,如输入变量的选择、模型结构的设计、超参数的调整等。因此,在实际应用中需要根据具体情况进行调整和优化,以达到更好的预测效果。

程序设计

  • 完整程序和数据获取方式:私信博主。
ntrain=round(nwhole*num_size);
    ntest =nwhole-ntrain;
    % 准备输入和输出训练数据
    input_train =input(:,temp(1:ntrain));
    output_train=output(:,temp(1:ntrain));
    % 准备测试数据
    input_test =input(:, temp(ntrain+1:ntrain+ntest));
    output_test=output(:,temp(ntrain+1:ntrain+ntest));
    %% 数据归一化
    method=@mapminmax;
    [inputn_train,inputps]=method(input_train);
    inputn_test=method('apply',input_test,inputps);
    [outputn_train,outputps]=method(output_train);
    outputn_test=method('apply',output_test,outputps);
    % 创建元胞或向量,长度为训练集大小;
    XrTrain = cell(size(inputn_train,2),1);
    YrTrain = zeros(size(outputn_train,2),1);
    for i=1:size(inputn_train,2)
        XrTrain{
   
   i,1} = inputn_train(:,i);
        YrTrain(i,1) = outputn_train(:,i);
    end
    % 创建元胞或向量,长度为测试集大小;
    XrTest = cell(size(inputn_test,2),1);
    YrTest = zeros(size(outputn_test,2),1);
    for i=1:size(input_test,2)
        XrTest{
   
   i,1} = inputn_test(:,i);
        YrTest(i,1) = outputn_test(:,i);
    end

    %% 创建混合CNN-LSTM网络架构
%%  区间覆盖率
RangeForm = [T_sim(:, 1), T_sim(:, end)];
Num = 0;

for i = 1 : length(T_train)
    Num = Num +  (T_train(i) >= RangeForm(i, 1) && T_train(i) <= RangeForm(i, 2));
end

picp = Num / length(T_train);     


    S = cumtrapz(X,Y);
    Index = find(abs(m-S)<=1e-2);
    Q = X(max(Index));

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/127931217
[2] https://blog.csdn.net/kjm13182345320/article/details/127418340

相关文章
|
4天前
|
机器学习/深度学习 算法 算法框架/工具
数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子
数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子
26 0
|
1天前
|
机器学习/深度学习 算法 算法框架/工具
PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子
PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子
|
4天前
|
机器学习/深度学习 算法 Python
Python用RNN神经网络:LSTM、GRU、回归和ARIMA对COVID19新冠疫情人数时间序列预测
Python用RNN神经网络:LSTM、GRU、回归和ARIMA对COVID19新冠疫情人数时间序列预测
47 12
|
3月前
|
Perl
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
|
3月前
【数值分析】迭代法求方程的根(附matlab代码)
【数值分析】迭代法求方程的根(附matlab代码)
|
3月前
【数值分析】Jacobi、Seidel和Sor迭代法求解线性方程组(附matlab代码)
【数值分析】Jacobi、Seidel和Sor迭代法求解线性方程组(附matlab代码)
|
3月前
【数值分析】二分法求方程的根(附matlab代码)
【数值分析】二分法求方程的根(附matlab代码)
|
19天前
|
存储 人工智能 机器人
【Matlab】Matlab电话拨号音合成与识别(代码+论文)【独一无二】
【Matlab】Matlab电话拨号音合成与识别(代码+论文)【独一无二】
|
2月前
|
机器学习/深度学习 算法 计算机视觉
霍夫变换车道线识别-车牌字符识别代码(matlab仿真与图像处理系列第5期)
霍夫变换车道线识别-车牌字符识别代码(matlab仿真与图像处理系列第5期)
30 2
|
2月前
|
算法
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
40 0