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

news2024/12/27 19:16:48

目录

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

效果一览

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

基本介绍

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:m
    data_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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2086396.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多任务学习MTL模型:多目标Loss优化策略

前言 之前的文章中多任务学习MTL模型:MMoE、PLE,介绍了针对多任务学习的几种模型,着重网络结构方面的优化,减缓task之间相关性低导致梯度冲突,模型效果差,以及task之间的“跷跷板”问题。 但其实多任务学…

文件包含之session.upload_progress的使用

目录 原理 环境搭建 渗透 结果 一次项目经历复现 原理 session.auto_start顾名思义,如果开启这个选项,则PHP在接收请求的时候会自动初始化Session,不再需要执行session_start()。但默认情况下,也是通常情况下,这…

k8s声明式管理方式(yaml文件实现)

首先在/opt目录下创建 mkdir k8s-yaml cd k8s-yaml/ yaml文件 1.deployment的部署方式 首先 kubectl explain deployment 获取它的类型kind和标签version vim nginx-deploy.yaml apiVersion: apps/v1 #定义api版本的标签 kind: Deployment #定义资源的类型(kin…

【数模修炼之旅】10 遗传算法 深度解析(教程+代码)

【数模修炼之旅】10 遗传算法 深度解析(教程代码) 接下来 C君将会用至少30个小节来为大家深度解析数模领域常用的算法,大家可以关注这个专栏,持续学习哦,对于大家的能力提高会有极大的帮助。 1 遗传算法介绍及应用 …

网络安全面试经验80篇

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s…

《JavaEE进阶》----5.<SpringMVC②剩余基本操作(CookieSession)>

Cookie和Session简介。 Spring MVC的请求中 Cookie的设置和两种获取方式 Session的设置和三种获取方式。 三、(接上文)SpringMVC剩余基本操作 3.2postman请求 3.2.10 获取Cookie和Session 1.理解Cookie 我们知道HTTP协议自身是“无状态”协议。 &qu…

2024.8.28 C++

使用C手动封装一个顺序表&#xff0c;包含成员数组一个&#xff0c;成员变量N个 代码 #include <iostream> //使用C手动封装一个顺序表&#xff0c;包含成员数组一个&#xff0c;成员变量N个 using namespace std;using datatype int; struct Seqlist { private:datat…

flink 实战理解watermark,maxOutOfOrderness,allowedLateness

watermark watermark的作用 就是延迟触发窗口&#xff0c;让乱序到达的元素依然能够落在正确的窗口内。为啥能实现这个效果&#xff0c;一直通过公式更新watermark,如果乱序到的元素就不能更新watermark,相当于就是延迟触发计算操作。触发时间 watermark 大于窗口的最大值allo…

我的易经代码

本人从2000年起&#xff0c;就开始写一款算命软件&#xff0c;第一版用的是powerbuilder。后来改成企业版&#xff0c;名为“始皇预测”&#xff0c;用Java Swing编写&#xff0c;支持五大神数&#xff0c;三式&#xff0c;主要应用还是六爻、四柱、风水&#xff0c;其它如称骨…

2024118读书笔记|《岳阳楼记》——天高地迥,觉宇宙之无穷;兴尽悲来,识盈虚之有数

2024118读书笔记|《岳阳楼记》——天高地迥&#xff0c;觉宇宙之无穷&#xff1b;兴尽悲来&#xff0c;识盈虚之有数 爱莲说陋室铭小石潭记醉翁亭记赤壁赋桃花源记归去来兮辞木兰辞阿房宫赋滕王阁序岳阳楼记 《岳阳楼记》范仲淹&#xff0c;都是背过的古文&#xff0c;挺不错的…

【Qt窗口】—— 工具栏

前情摘要&#xff1a; 工具栏相当于菜单栏中的众多快捷方式&#xff0c;毕竟很多操作都是通过菜单栏来直接访问的&#xff0c;但是可能会查找很长时间&#xff0c;首先就是查找在哪个菜单里面&#xff0c;打开菜单才能进一步操作。而工具栏则是把一些常用的操作都给列举出来&am…

生产者与消费者模型

生产者与消费者模型 生产者&#xff1a;生产数据的线程&#xff0c;这类的线程负责从用户端、客户端接收数据&#xff0c;然后把数据Push到存储中介。 消费者&#xff1a;负责消耗数据的线程&#xff0c;对生产者线程生产的数据进行&#xff08;判断、筛选、使用、响应、存储&…

C++必修:布隆过滤器的提出与实现

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 贝蒂的主页&#xff1a;Betty’s blog 1. 布隆过滤器的引入 在我们注册游戏或者社交账号时&#xff0c;我们可以自己设置…

科学重温柯南TV版:基于B站视频数据分析

麻鸭&#xff0c;四年过去了&#xff0c;失踪人口回归。 第一篇就决定是你了。 看了柯南M27剧场版后&#xff0c;萌生了重温TV版的念头&#xff0c;但是1191集(截止24/8/26)的体量太恐怖了&#xff0c;遂取点巧&#xff0c;综合大V建议(知乎&#xff1b;公众号)和视频网站数据…

基于asp.net的驾校管理系统附源码

这是一个基于asp.net的webform框架开发的BS架构的系统&#xff0c;详情如下&#xff1a; 项目下载链接 链接&#xff1a;https://pan.quark.cn/s/0679e783ef71

【设计模式】创建型模式——抽象工厂模式

抽象工厂模式 1. 模式定义2. 模式结构3. 实现3.1 实现抽象产品接口3.2 定义具体产品3.3 定义抽象工厂接口3.4 定义具体工厂3.5 客户端代码 4. 模式分析4.1 抽象工厂模式退化为工厂方法模式4.2 工厂方法模式退化为简单工厂模式 5. 模式特点5.1 优点5.2 缺点 6. 适用场景6.1 需要…

深入理解OJ编程中的输入输出:11个经典题目详解与技巧分享及stringstream,sort详解

文章目录 1.多组输入计算ab2.给定组数计算ab3.给定组数计算ab&#xff08;如果为0则结束&#xff09;4.计算一些列数的和(第一个数为0时结束)5.计算一些列数的和&#xff08;告诉了有几组&#xff09;6.计算一系列数的和&#xff08;不告知几组和何时结束&#xff0c;每一组第一…

如何评估云服务器提供商可靠性与信誉度

在云计算时代&#xff0c;选择一个可靠和信誉良好的云服务器提供商对于个人用户和企业来说至关重要。以下是评估云服务器提供商可靠性与信誉度的关键指标和方法&#xff1a; 1. 服务水平协议&#xff08;SLA&#xff09;&#xff1a; 可用性承诺&#xff1a; 查看云服务器提供…

服务器内存飙升分析小记

1. 写在最前面 这个繁忙的八月真的是转瞬即逝&#xff0c;我明明感觉似乎好像才八月刚开始&#xff0c;但是其实已经到了八月的尾巴。这个月本来想抽空整理一下学习 AI 模型相关的东西&#xff0c;奈何每天不是在查问题就是在查问题的路上&#xff0c;不是在修 Bug 就是在写 B…