保姆级教程!QRCNN-BiLSTM一键实现多变量回归区间预测!区间预测全家桶再更新!

       声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 

        今天对我们之前推出的区间预测全家桶进行更新,将最新推出的QRCNN-BiLSTM模型加入到我们的全家桶当中,非常新颖!

        如果你之前购买过区间预测全家桶,此次推出的模型免费下载即可!

        同样,本期代码大家使用的时候只需要一键运行main即可出来所有图片与区间预测结果!非常方便!适合新手小白!如果你想替换成自己的其他数据集,也非常方便!只需替换Excel文件即可,无需更改代码!

数据介绍

        本期数据使用的依旧是多变量回归数据集,是某地一个风电功率的数据集,经过处理后有3个特征,分别用特征1、2、3来表示,具体特征含义大家不必深究,这边只是给大家提供一个示例而已,大家替换成自己的数据集即可~

        更换自己的数据时,只需最后一列放想要预测的列,其余列放特征即可,无需更改代码,非常方便!

模型原理与流程

        传统预测是以点预测的形式提供的,这种单一的预测信息不足以体现预测的不确定性。分位数回归可以直接估计不同分位数的点值,其优点是可以在整个分位数范围内提供预测值,而不用提前假设分布函数的参数形式。

        因此,我们结合分位数理论,提出基于分位数的 CNN-BiLSTM 预测模型,该模型可实现在不同分位数下的预测,从而实现区间预测功能。

1.CNN(卷积神经网络)

        CNN 具有出色的特征提取能力,已经在计算机视觉、故障诊断等领域得到了广泛的应用。卷积层和池化层是 CNN 的两个重要组成部分,也是 CNN 特有的结构,其在CNN结构中通常交替出现, 同时在CNN结构通常还包含全连接层。CNN 网络的典型结构如下图所示。卷积层的主要作用是深入挖掘输入数据的特征,池化层通常紧随在卷积层后,可以降低特征维度,使CNN网络的收敛速度更快。具体的卷积计算过程式为:

        式中:O 表示神经元局部输出;I 为神经元输入;l、 m、n 分别表示输出矩阵的 3 个维度;i、j、n 分别 表示卷积核 K 的长度、宽度和深度;n b 表示卷积核 的阈值;⊗表示矩阵的乘法运算。

2.BiLSTM(双向长短期记忆神经网络)

        LSTM 循环单元中隐藏层主要包含 4 个重要结构,分别是细胞状态、遗忘门、输入门和输出门。其中细胞状态是 LSTM 循环单元的核心结构,遗忘门、输入门和输出门 3 个门控单元可以达到对细胞状态的控制,细胞状态与 3 个门控单元结构配合实现了保持、更新以及传递状态信息的目的。

        传统的神经网络在训练时总是从前到后传播训练的,这种训练方式无法最大程度地挖掘蕴藏在 光伏功率时间序列的内在信息,数据的利用率低。而 BiLSTM 网络通过前向传播和后向传播为进一步挖掘当前时刻的功率数据与过去和未来数据之间的内在关联创造了有利条件。BiLSTM 网络模型的结构示意图如下图所示。与传统的单向 LSTM 网 络相比,其突出特点是构建了一个双向循环神经网 络,即同时包含了前向传播和后向传播,克服了单向传播LSTM 神经网络挖掘数据信息不充分的缺陷。

3.分位数回归(QR)

        分位数回归方法由 Koenker 等人提出,通过研究自变量和因变量间的条件分位数关系确定回归模型,可以实现由解释变量估计响应变量的条件分位数计算。设有c个解释变量 U={U1,U2,…,Uc}作用于随机变量S,S的分布函数可表示为:

        则对任意分位数τ,τ∈[0,1],有:

        式中 F-1 (τ)为S的第τ分位数 ;inf(s)为集合s的下确界。

        线性分位数回归模型中,响应变量S在解释变量U下的第τ个条件分位数 QS(τ|U)为:

        式中β(τ)为τ分位点下的回归系数向量。

        不同分位点下的β(τ)不同,因此确定了β(τ)也就确定了该回归模型。另外,β(τ)的相关参数可由下式的损失函数进行求解,即:

        式中ρτ(μ)为检验函数,其通过使ρτ(μ)最小,来求解模型回归系数β(τ)。检验函数ρτ(μ)为:

4.模型结构图

        以下是程序中的网络结构图,跟其他程序中的CNN-BiLSTM模型相比,此次模型结构简洁了很多,直接将CNN和BiLSTM串行到底!省去了很多不必要的网络结构和代码,更加清晰易懂,适合新手小白!同时,直接运行main文件即可一键自动生成此网络结构图!

结果展示

        这里采用了95%的置信区间,如果大家需要其他的置信区间,也可以自行更改,只需在代码的创建网络处修改即可,非常简单!

        区间预测的测试集预测结果:

        区间预测的训练集预测结果:

        网络结构图:

        点预测的误差直方图:

        点预测的线性拟合图:

        我们也很贴心地给出了很多评价指标,点预测包括4种评价指标,包括R2、MAE、MSE、MAPE,区间预测包括2种评价指标,区间覆盖率PICP、区间平均宽度百分比PIMWP,如果后续有需要增加评价指标的小伙伴可以私聊~

        可以看到,我们的QRBiGRU预测精度非常高,在95%置信水平下的PICP甚至达到了98.8%,R2也达到了0.99以上,与真实值基本吻合,这是很多论文都无法达到的效果,非常适合用来作为创新点!

        当然,如果你觉得效果不好,想要效果更好,可以增大设置中的最大迭代次数,比如500次,1000次,可根据个人需求调整!

        以上所有图片,作者都已精心整理过代码,都可以一键运行main直接出图!不信的话可以看下面文件夹截图,非常清晰明了!

        适用平台:Matlab2020B版本及以上,没有的文件夹里已免费提供安装包!

部分代码展示

%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行
​
%%  导入数据
res = xlsread('数据集.xlsx');
​
%%  数据分析
num_size = 0.7;                              % 训练集占数据集比例
outdim = 1;                                  % 最后一列为输出
num_samples = size(res, 1);                  % 样本个数
%res = res(randperm(num_samples), :);         % 打乱数据集(不希望打乱时,注释该行)
num_train_s = round(num_size * num_samples); % 训练集样本个数
f_ = size(res, 2) - outdim;                  % 输入特征维度
​
%%  划分训练集和测试集
P_train = res(1: num_train_s, 1: f_)';
T_train = res(1: num_train_s, f_ + 1: end)';
M = size(P_train, 2);
​
P_test = res(num_train_s + 1: end, 1: f_)';
T_test = res(num_train_s + 1: end, f_ + 1: end)';
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);
​
%%  格式转换
for i = 1 : M vp_train{i, 1} = p_train(:, i);vt_train{i, 1} = t_train(:, i);
end
​
for i = 1 : N vp_test{i, 1} = p_test(:, i);vt_test{i, 1} = t_test(:, i);
end
​
%%  创建网络
save_net = [];
for i = 0.02 : 0.05 : 0.97                    % 置信区间范围 0.97 - 0.02 = 0.95

        可以看到,代码注释非常清晰,适合新手小白!

全家桶代码目录

        目前,全家桶在之前8个模型的基础上又增加了一个,共9个,之后还会推出更多更新颖的模型!

        更重要的是,购买后如果以后推出其他区间预测模型,可直接免费下载,无需再次付费!

        但如果你之后再买,一旦推出新模型,价格肯定是会上涨的!所以需要创新的小伙伴请早下手早超生!!

        目前已经提供了9种区间预测模型,如果小伙伴有想要跟自己的预测模型结合起来,比如将BiTCN-BiGRU-Attention这类高级的模型形成区间预测,都是没有问题的!后台留言或私信我即可!)

代码获取

        1.已将本文算法加入区间预测全家桶中,点击下方小卡片,后台回复关键字,不区分大小写:

区间预测全家桶

        2.如果实在只想要QRCNN-BiLSTM单品的同学,点击下方小卡片,后台回复关键字,不区分大小写:

QRCB

        更多代码链接:更多代码链接

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

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

相关文章

进程间通信IPC(二)

一、存储映射I/O(Memory-mapped I/O) 使一个磁盘文件与存储空间中的一个缓冲区相映射。于是从缓冲区中取数据,就相当于读文件中的相应字节。与此类似,将数据存入缓冲区,则相应的字节就自动写入文件。这样,就可在不使用read和write…

由于找不到msvcp110d.dll,无法继续执行代码

在计算机软件开发和运行环境中,动态链接库(DLL)文件扮演着至关重要的角色。它们封装了特定功能的代码,使得多个应用程序能够共享这些功能而无需重复编译或加载相同的代码,从而显著提升了系统资源利用率和软件开发效率。…

024——驱动、server、client、GUI全功能联调

目录 一、本次修改 二、GUI和Client之间联调 2.1 工程结构修改 2.2 将TCP程序修改为可被其它程序调用 2.3 优化显示界面 2.4 解决GUI通过tcp send的问题 2.5 处理服务器数据 时间不是很多了,我想压缩一下快点把属于毕设的这部分搞完,俺要出去旅游…

【HTML】H5新增元素记录

H5 新增元素特性 1. 语义化标签 语义化标签的好处: 对于浏览器来说,标签不够语义化对于搜索引擎来说,不利于SEO的优化 语义化标签: header:头部元素nav:导航section:定义文档某个区域的元素article:内容元素aside…

解锁多智能体路径规划新境界:结合启发式搜索提升ML本地策略

引言:多智能体路径寻找(MAPF)问题的重要性与挑战 在现代自动化和机器人技术迅速发展的背景下,多智能体路径寻找(Multi-agent path finding,简称MAPF)问题的研究变得日益重要。MAPF问题涉及为一…

【NTN 卫星通信】NTN的SSB波束探讨

1 概述 SSB是同步广播信道,用于小区搜索,主系统消息的发送。NR协议中定义了多种SSB波束格式,简述如下。   小区搜索是终端获取与小区的时间和频率同步并检测小区的物理层小区ID的过程。   为了进行小区搜索,UE接收以下同步信号…

MySQL Workbench下载安装、 MySQL Workbench使用

官方下载链接;MySQL :: Download MySQL Workbench 下载好懒人安装,也可自己选择目录 下面是使用: 连接数据库: 填写数据库连接信息: 基本操作部分: 数据导入导出: 导出/备份 导入: 生产er图…

【热门话题】探索与心得:深入体验Microsoft Edge浏览器

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 探索与心得:深入体验Microsoft Edge浏览器一、Edge浏览器概述1.1 发…

大型网站系统架构演化实例_5.使用反向代理和CDN加速网站响应

1.使用反向代理和CDN加速网站响应 随着网站业务不断发展,用户规模越来越大,由于区域的差别使得网络环境异常复杂,不同地区的用户访问网站时,速度差别也极大。有研究表明,网站访问延迟和用户流失率正相关,网…

【嵌入式】交叉编译指南:将开源软件带到嵌入式世界

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

mybatis一对一,多对一,一对多--使用自动映射避免繁琐的resultMap

头疼的一对一,多对一,一对多写法 我们知道,相比较hibernate,mybatis的一对一,一对多都比较繁琐,hibernate可以直接在实体类里面配置好映射关系,获取值的时候就能把一对一和一对多的对象带出来了&#xff0…

手把手教你实现贪吃蛇

前言 在实现贪吃蛇前,我们需要熟练地掌握C语言知识,对初阶数据结构中的链表有一定的掌握,并且我们还会使用到Win 32 API 的知识,下面我会对需要使用到的API接口函数进行解释。最终的代码我放在后面,有需要的可以自取。…

探索C语言数据结构:利用顺序表完成通讯录的实现

在好久之前我就已经学习过顺序表,但是在前几天再次温习顺序表的时候,我惊奇的发现顺序编表可以完成我们日常使用的通讯录的功能,那么今天就来好好通过博客总结一下通讯录如何完成吧。 常常会回顾努力的自己,所以要给自己的努力留…

OpenHarmony其他工具类—lua

简介 Lua是一种功能强大、高效、轻量级、可嵌入的脚本语言。 支持过程编程、面向对象编程、函数编程、数据驱动编程和数据描述。 下载安装 直接在OpenHarmony-SIG仓中搜索lua并下载。 使用说明 以OpenHarmony 3.1 Beta的rk3568版本为例 将下载的lua库代码存在以下路径&#…

Java Web3-2 - tomcat

https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/Tomcat_架构解析.md https://zhuanlan.zhihu.com/p/40249834 早期,web技术主要用于浏览静态页面 时间发展,用户已经不满足于仅浏览静态页面。用户需要一些交互操作,获取…

STM32G431RBT6之时钟树配置与生成工程

默认大家都下载了蓝桥杯嵌入式资源包了哈. 首先,打开cubumx,修改RCC与SYS. 打开并观察原理图,发现晶振是24Mhz. 第一步,打开Clock Configuration. 第二步,修改晶振为原理图相对应的24Mhz. 第三步,切换到HSE. 第四步,切换到PLLCLK. 第五步,设置HCLK为80Mhz(15届真题要求为8…

洛谷P1057 [NOIP2008 普及组] 传球游戏

#include<iostream> using namespace std; int n;// n个人传球游戏 默认开始球在编号为1的位置 int m;// 传递m次球 int main(){cin>>n>>m;// 动态转方程&#xff1a;// 球传递到编号为k人的手中// 种类总数 传递到k-1编号种类总数 传递到k1编号种类总数//…

wsl2 Ubuntu子系统内存只有一半的解决办法

物理机的内存是64G&#xff0c;在wsl2安装完Ubuntu20.04后&#xff0c;输入命令&#xff1a; free -g 发现只有32G&#xff0c;原因是默认只能获得物理机一半的内存&#xff1a; WSL 中的高级设置配置 | Microsoft Learn 因此可手动修改为与物理机同等大小&#xff1a; 1&a…

再拓信创版图-Smartbi Insight V11与东方国信CirroData数据库完成兼容适配认证

近日&#xff0c;思迈特商业智能与数据分析软件 [简称&#xff1a;Smartbi Insight] V11与北京东方国信科技股份有限公司 &#xff08;以下简称东方国信&#xff09;CirroData-OLAP分布式数据库V2.14.1完成兼容性测试。经双方严格测试&#xff0c;两款产品能够达到通用兼容性要…

Cronjob提权

参考&#xff1a; https://redpomelo.xyz/archives/1699953656909 前言 提权为该靶机的精髓&#xff0c;Cronjob通常以root特权运行。如果我们可以成功篡改cronjob中 定义的任何脚本或二进制文件&#xff0c;那么我们可以以root特权执行任意 代码。 什么是Cronjob&#xf…