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

news2024/11/17 3:42:19

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

        今天对我们之前推出的区间预测全家桶进行更新,将最新推出的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.coloradmin.cn/o/1611039.html

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

相关文章

最邻近插值和线性插值

最邻近插值 在图像分割任务中:原图的缩放一般采用双线性插值,用于上采样或下采样;而标注图像的缩放有特定的规则,需使用最临近插值,不用于上采样或下采样。 自定义函数 这个是通过输入原始图像和一个缩放因子来对图像…

JVM类加载基本流程及双亲委派模型

1.JVM内存区域划分 一个运行起来的Java进程就是一个JVM虚拟机,这就需要从操作系统中申请一片内存区域。JVM申请到内存之后,会把这个内存划分为几个区域,每个区域都有各自的作用。 一般会把内存划分为四个区域:方法区(也称 "…

力扣287. 寻找重复数

Problem: 287. 寻找重复数 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 利用二分查找搜索1 ~ n中重复的元素,我们每次取出当前二分查找的区间的中间元素mid并在元始的数组nums中统计小于mid的元素的个数count: 若count > mid则说明重复的…

大数据学习的第三天

文章目录 学习大数据命令的方式查看文件拷贝文件的方式添加数据的方式 出现了问题移动文件 hadoop工作流程和工作机制的方式namenodedatanodesecondarynamenode(主节点) 学习大数据命令的方式 查看文件 hadoop fs -cat /test/2.txt下载文件 hadoop fs -get -f /test/2.txt-f …

通俗说字解词:什么是道理?常说讲道理,李秘书讲写作这节就给你讲“道理”!

通俗说字解词:什么是道理?常说讲道理,李秘书讲写作这节就给你讲“道理”! 说到“道理”,这可真是个有意思的词。它由“道”和“理”两个部分组成,就像一碗好吃的面,有汤有料,缺一不可…

xilinx cpri ip 开发记录

CPRI是无线通信里的一个标准协议,连接REC和RE的通信。 Xilinx有提供CPRI IP核。 区别于其它通信协议,如以太网等,CPRI是一个同步系统。 这就意味着两端的Master和Slave应当是同源时钟的,两边不存在频差,并且内部延时…

ikigai极简3p模型:想、能、有

ikigai模型简化为3p模型: - passion 想要、想做 - professional 能要、能做 - profit 有益、有利 根据三角形不可能定律,三者满足两个就很不容易了。又想做又能做的未必有钱,又能做又有钱的未必想做,又想做又有钱的未必能做。 要实…

(C语言)sscanf 与 sprintf详解

目录 1.sprintf函数详解 2. sscanf函数详解 1.sprintf函数详解 头文件&#xff1a;stdio.h 作用&#xff1a;将格式化的数据写入字符串里&#xff0c;也就是将格式化的数据转变为字符串。 演示&#xff1a; #include <stdio.h> struct S {char name[10];int height;…

LeetCode---128双周赛

题目列表 3110. 字符串的分数 3111. 覆盖所有点的最少矩形数目 3112. 访问消失节点的最少时间 3113. 边界元素是最大值的子数组数目 一、字符串的分数 按照题目要求&#xff0c;直接模拟遍历即可&#xff0c;代码如下 class Solution { public:int scoreOfString(string …

如何通过通过钉钉发送信息????????

1、通过钉钉群添加一个机器人 2、代码实现 /*** 发钉钉审核.** param*/private void sendDingDing(String tableName) {String url "https://oapi.dingtalk.com/robot/send?access_token229c627d05a3157f79a5ef1942d29c4dfb4515bf5c0ad65e3c69423bc016f97c";JSONOb…

达梦数据库的AWR报告

达梦数据库的AWR报告 数据库快照是一个只读的静态的数据库。 DM 快照功能是基于数据库实现的&#xff0c;每个快照是基于数据库的只读镜像。通过检索快照&#xff0c;可以获取源数据库在快照创建时间点的相关数据信息。 为了方便管理自动工作集负载信息库 AWR&#xff08;Auto…

网络编程初步

协议&#xff1a; 一组规则 分层模型结构&#xff1a; OSI七层模型&#xff1a;物、数、网、传、会、表、应 TCP/IP 4层模型&#xff1a;网&#xff08;链路层/网络接口层)、网、传、应 应用层&#xff1a;http、 ftp、 nfs、 ssh、 telneto o .传输层:TCP、UDP 网络层&…

累加(C语言)

一、题目&#xff1b; 二、N-S流程图&#xff1b; 三、运行结果&#xff1b; 四、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int i 0;int j 0;int n 5;int result 0;int sum 0;//运算&#…

笔试强训未触及题目(个人向)

NC398 腐烂的苹果 1.题目 2.解析 这是一个广度优先搜索问题&#xff0c;我们可以先找到所有的烂苹果&#xff0c;把它加入到队列中&#xff0c;然后再同时让这几个苹果向外面腐蚀&#xff0c;我们可以用一个boolean数组来表示是否被腐蚀&#xff0c;也可以直接在原数组中将这…

ThingsBoard通过规则链创建报警信息

什么是规则引擎? 典型实例 1、复制根规则链为报警规则链路 2、拖动Script Filter 规则节点放入链中并配置如下脚本: 3、配置名称为&#xff1a;高温报警&#xff0c;并执行下面的脚本 4、将Script于上一个节点进行关联 5、选择动作里面的create alarm节点信息并放入其中…

解决微信打开文件编辑显示只读状态

微信官网下载地址&#xff1a;微信&#xff0c;是一个生活方式 新版本解决方案&#xff1a; 微信打开文件只读问题终于得到彻底解决了&#xff01;请尽快升级微信 Windows3.9.6 或者微信 mac3.8.1 版本&#xff0c;均新增聊天文件取消只读开关. 旧版本解决方案&#xff1a; …

【笔记】应对Chrome更新导致Chromedriver失效的解决方案:Chrome For Test

随着网络应用和网站的不断发展&#xff0c;自动化测试变得越来越重要&#xff0c;而Selenium成为了许多开发者和测试人员的首选工具之一。然而&#xff0c;对于使用Selenium来进行网站测试的人来说&#xff0c;Chrome浏览器的频繁更新可能会成为一个头疼的问题。每当Chrome更新…

如何在本地服务器部署TeslaMate

文章目录 1.主要参考官方文档2.准备文件&#xff1a;docker-compose.yml3.运行4.成功后4.1 在这个链接&#xff0c;更具提示登录4.2 在这个链接可以看到电池健康和行车数据等 5.后续说明6.进行数据备份6.1 先将数据进行备份&#xff0c;参考链接6.2 数据迁移6.3 下图为我挂该数…

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

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

精通代码格式:如何有效管理Python代码行长度

文章目录 1. 问题描述2. 设置文本编辑器的规则2.1 PyCharm 设置2.2 Visual Studio Code 设置 今天写代码遇到一个滑稽的问题&#xff0c;python代码的换行也有规则&#xff0c;于是记录一下 1. 问题描述 在刷LeetCode验证二叉树的时候我写了如下代码&#xff1a; if (not hel…