当前位置: 首页 > news >正文

上新!Matlab实现基于QRGRU-Attention分位数回归门控循环单元注意力机制的时间序列区间预测模型

目录

      • 效果一览
      • 基本介绍
      • 程序设计
      • 参考资料

效果一览

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基本介绍

1.Matlab实现基于QRGRU-Attention分位数回归门控循环单元注意力机制的时间序列区间预测模型;

2.多图输出、多指标输出(MAE、RMSE、MSE、R2),多输入单输出,含不同置信区间图、概率密度图;

3.data为数据集,功率数据集,用过去一段时间的变量,预测目标,目标为最后一列,也可适用于负荷预测、风速预测;main为主程序,其余为函数文件,无需运行;

数据集为2018年6月2日-2018年8月9日的6624个样本,采样间隔为15 分钟。选取2018年6月2日-2018年8月4日为训练集,剩下作为测试集。采用过去5个小时的特征作为输入,目标和特征都进行了归一化和差分进行训练。训练迭代器采用adam,学习率为0.001,批次大小为64,迭代轮数30轮。网络为两层GRU单元+一个注意力机制,神经元个数为64。损失函数采用分位数回归:
在这里插入图片描述
以测试样本集中2018:08:05:0:0时刻至2018:08:09:23:45时刻为例,分位数预测得到不同置信区间下的风电功率结果如图所示。可以看出,不同置信度条件下的预测区间与风电功率实际值的波动大致相同,表明本文的方法能够准确预测风电功率变化,此外在实际值变化剧烈的地方置信区间越宽,表明预测可信度变低,这也与实际情况相符合。对比预测未来不同时间步的预测区间,预测的误差在增大。以测试样本集中2018年8月5日-6日的6:00、12:00 和18:00为例,根据分位数预测未来90min后的结果,采用核密度估计,生成风电功率的概率密度曲线。如图所示。可以看到,风电功率实际值均落在高概率密度波峰处附近。
4.代码质量高,注释清楚,含数据预处理部分,处理缺失值,如果为nan,用上一行替代,也含核密度估计;

程序设计

  • 完整程序和数据获取方式私信博主回复Matlab实现基于QRGRU-Attention分位数回归门控循环单元注意力机制的时间序列区间预测模型。

%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行
data=[data_new data_new];
%日期转换,方便观察
data_time =datevec(cell2mat(data_text(2:end,1)));
data_time=data_time(:,1:3);
data_time_temp=[];
[m, n]=size(data_time);
for i=1:mdata_time_temp=[data_time_temp;repmat(data_time(i,:),96,1)];
end
data_time_hour=repmat([0:23]',m*4,1);
data_time_minute=repmat([0:15:59]',m*24,1);
data_time=[data_time_temp data_time_hour data_time_minute];
%% 你需要按照你的数据集和要求修改的内容
%注意数据,前面几列是特征变量,预测目标为最后一列。行数为样本数,一般按时间排序来
split_point=6144; %%选取前多少个作为训练样本,剩下的作为测试,这里是2018年8月5号0点0分
split_point_test_flag=1;%%因为是时序问题,测试集个数固定,因为前几个的历史特征没有,所以历史特征是否要向训练集借来历史样本=0表示不借,=1表示借
feature_num=1; %% 每个时刻的特征数,这个每个数据集不一样,要自己去数,这个要到网络搭建输入时候会用到,如果目标也参与作为输入变量,要加1,这里是单变量,所以为1就好
target_num=1;  %% 要预测的目标个数,如果是单目标为1就行,多目标就自己去数,这个要到网络网络搭建输出时候会用到
history_steps=20; %用过去的共history_steps个时间步时刻,如果用过去10个,改成history_steps=10就好
future_step=6; %预测未来的第future_step个时刻,因为是15min一个,=2表示预测未来第30分钟,=4表示预测未来第60分钟
chafen_flag=1; %是否启用差分,为1表示启用:这里特征是与前一个时刻的差分了,目标也是差分了=(t+future_step)-t,一般差分会好,不差分结果会差一点
rng(2021) %定随机种子,保证每次结果一样,保证结果可以复现
neuron_num=64; %神经元个数
lr=0.001;%学习率,如果想改成可变学习率,在网络设置里再调
batchsize=64;%批次大小
maxpochs=30;%最大迭代轮数

参考资料

[1] http://t.csdn.cn/pCWSp
[2] https://download.csdn.net/download/kjm13182345320/87568090?spm=1001.2014.3001.5501
[3] https://blog.csdn.net/kjm13182345320/article/details/129433463?spm=1001.2014.3001.5501

相关文章:

  • uni-app布局
  • 样式(3)----修改主题颜色
  • 数据库:笔记03SQL
  • 数据结构之内核链表,栈,队列
  • 什么是CSRF跨站请求伪造
  • 【Python 千题 —— 基础篇】身份证隐藏的信息
  • 使用Nginx部署Vue项目
  • Spring Boot 多数据源配置
  • 【软件工程】软件与软件危机
  • Kali学习(ms17-010、ms08-067漏洞复现)
  • 算法: 双指针
  • QT Quick QML 添加海康威视SDK云台控制模块
  • 【ShuQiHere】《机器学习的进化史『上』:从数学模型到智能算法的百年征程》
  • 【Git】常用命令大全(带注释)
  • GPT-4.0 新手使用教程(保姆级入门)
  • [译] React v16.8: 含有Hooks的版本
  • [译] 怎样写一个基础的编译器
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • co.js - 让异步代码同步化
  • Docker: 容器互访的三种方式
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • JAVA之继承和多态
  • rc-form之最单纯情况
  • Vue.js源码(2):初探List Rendering
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • vue脚手架vue-cli
  • Vue全家桶实现一个Web App
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 浮动相关
  • 机器学习 vs. 深度学习
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 聚类分析——Kmeans
  • 马上搞懂 GeoJSON
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 数组大概知多少
  • 温故知新之javascript面向对象
  •  一套莫尔斯电报听写、翻译系统
  • #数学建模# 线性规划问题的Matlab求解
  • (3)STL算法之搜索
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (八)Spring源码解析:Spring MVC
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)大型网站架构演变和知识体系
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET_WebForm_layui控件使用及与webform联合使用
  • .NET的数据绑定
  • .net下的富文本编辑器FCKeditor的配置方法
  • /bin、/sbin、/usr/bin、/usr/sbin
  • @private @protected @public