原创!分解+集成思想新模型!VMD-CNN-BiGRU-Attention一键实现时间序列预测!以风速数据集为例

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

目录

数据介绍

模型流程

创新点

结果展示

部分代码展示

完整代码


        今天为大家带来一期基于分解+集成思想的VMD-CNN-BiGRU-Attention时间序列预测代码,知网和WOS都是搜不到的!完全是作者独家创立的!可以说是尚未发表的创新点直接替换Excel数据即可用!

        特别需要指出的是,我们在各个学术平台上搜索VMD-CNN-BiGRU-Attention,都是完全搜索不到这个模型的!!!不信的可以看下面截图!

        知网平台:

        WOS平台:

数据介绍

        本期作者采用的数据是某地的风速时间序列数据集,是为了方便大家替换自己的数据集。如果有时间一列,则可输入可不输入,因为程序是不会识别时间。

        更换自己的数据时,只需替换Excel中这一列,无需更改代码,非常方便!!!

模型流程

        先简单介绍一下我们的这个模型是怎么实现以及它的流程:

        1.数据导入:从Excel文件中读取风速预测的数据,只需一列即可。

        2.VMD分解:设置VMD参数,如分解个数和阿尔法的值,对风速序列使用VMD分解方法,分解成多个固有模式函数(IMF),并绘制分解结果。

        3.数据预处理和格式准备:将分解后的IMFs作为目标变量进行预处理,设置延时步长(若干个历史数据作为自变量),还有训练集和测试集的划分、数据归一化等。

        4.模型训练:对每个IMF分量,构建并训练CNN-BiGRU-Attention模型。

        5.模型预测:使用训练好的模型对训练集和测试集进行预测,并将预测结果进行反归一化处理。

        6.预测结果集成:将所有IMF分量的预测结果相加,得到最终的预测结果。

        7.结果对比和评估:绘制真实值与预测值的对比图,并计算R^2、MAE、RMSE和MAPE等评估指标。

        以上所有流程,作者都已精心整理过代码,都可以一键运行main直接出图!

        适用平台:Matlab2020B及以上,没有的可免费提供安装包!

创新点

        以下这些文字,如果大家需要用这个程序写论文,都是可以直接搬运的!

        1.VMD (Variational Mode Decomposition):

        VMD是一种信号分解方法,可以将时间序列数据分解成不同频率的子信号(模态)。利用VMD技术,模型可以更好地捕捉时间序列数据中不同频率的变化模式,提高了模型对数据特征的提取能力。

        2.CNN (Convolutional Neural Network):

        CNN被用于处理每个VMD分解得到的子信号,以提取局部特征。通过CNN,模型能够有效地捕获子信号中的空间局部信息,增强了模型对时间序列数据的特征提取能力。

        3.BiGRU (Bidirectional Gated Recurrent Unit):

        BiGRU是一种具有双向记忆和门控机制的循环神经网络结构,能够捕捉时间序列数据中的长期依赖关系。通过BiGRU,模型可以在学习过程中有效地记忆序列数据中的历史信息,从而提高了模型对序列数据的建模能力。

        4.通道注意力机制:

        通道注意力机制被引入以动态地调整模型对不同时间序列位置的关注程度。通过Attention机制,模型可以自适应地关注重要的时间序列,从而提高了模型在时间序列预测任务中的性能。

        5. 模型结构的高度整合

        该模型的一个关键创新是四种技术的高度整合,形成了一个既能捕捉复杂时间依赖性、又能关注关键信息的强大深度学习模型。这种整合不仅使模型在时间序列任务中表现出色,还保证了较低的计算成本和良好的可解释性。

结果展示

        原始序列:

        VMD分解结果:

        网络结构图:

        训练集预测结果:

        测试集预测结果:

        回归图:

        误差直方图:

        预测结果指标:

        由于时间关系,CNN-BiGRU-Attention的迭代次数作者只设置了100次,如果时间充足,可运行更多次,效果会更好~

        以上所有图片,作者都已精心整理过代码,都可以一键运行main直接出图,不像其他代码一样需要每个文件运行很多次!

        不信的话可以看下面文件夹截图,仅仅只有4个文件,非常清晰明了!

部分代码展示

%%  建立模型
    lgraph = layerGraph();                                                 % 建立空白网络结构
    
    tempLayers = [
        sequenceInputLayer([f_, 1, 1], "Name", "sequence")                 % 建立输入层,输入数据结构为[f_, 1, 1]
        sequenceFoldingLayer("Name", "seqfold")];                          % 建立序列折叠层
    lgraph = addLayers(lgraph, tempLayers);                                % 将上述网络结构加入空白结构中
    
    tempLayers = convolution2dLayer([3, 1], 32, "Name", "conv_1");         % 卷积层 卷积核[3, 1] 步长[1, 1] 通道数 32
    lgraph = addLayers(lgraph,tempLayers);                                 % 将上述网络结构加入空白结构中
     
    tempLayers = [
        reluLayer("Name", "relu_1")                                        % 激活层
        convolution2dLayer([3, 1], 64, "Name", "conv_2")                   % 卷积层 卷积核[3, 1] 步长[1, 1] 通道数 64
        reluLayer("Name", "relu_2")];                                      % 激活层
    lgraph = addLayers(lgraph, tempLayers);                                % 将上述网络结构加入空白结构中

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

完整代码

        点击下方小卡片,后台回复关键字,不区分大小写:

CXYHF

        其他更多需求或想要的代码均可点击下方小卡片后后台私信,看到后会秒回~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于electron29版本桌面应用app开发例子

基于electron29版本桌面应用app开发例子 htmljsnode.js 开发模式 生成package.json文件: yarn init --yes 或 npm init --yes 运行打包 yarn dev yarn build # electron与electron-builder版本不兼容问题处理办法: 在package.json中scripts中添加 “…

世媒讯软文营销策略如何做才能达到引流的目的

软文营销是一种通过撰写软文来宣传企业、产品或服务的网络营销方式。通过撰写具有故事性、吸引人的文章来间接推广产品、服务或品牌的营销策略。要实现软文营销的目的,即引流(吸引流量),以下是一些有效的策略: 新闻策略…

10.注册页面

注册页面 在pages中新建页面register 复制粘贴之前的登录页面 设置上传头像图片 微信官方文档 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/userProfile.html <button class"avatar-wrapper" open-type"chooseAvatar&quo…

PCL安装(C++)并配置vs

准备工作&#xff1a; 1.PCL下载包(此教程使用PCL1.11.0) 3.visual studio(此教程使用vs2019) PCL下载&#xff1a; 1、找到自己适合的PCL版本,我选择的是PCL1.11.0。 1.1 Github下载&#xff1a;Releases PointCloudLibrary/pcl GitHub 1.2 百度网盘&#xff1a;https://pan…

初识数据库原理:为什么需要数据库?

初识数据库原理&#xff1a;什么是数据库&#xff1f; Chapter1&#xff1a;什么是数据库&#xff1f; 笔记来源&#xff1a;《漫画数据库》–科学出版社 1.1 为什么需要数据库&#xff1f; 文件应用的管理方式&#xff0c;数据会出现重复。 若各个部门各自管理自己一方的数…

牛客NC196 编辑距离(一)【较难 DFS/DP,动态规划,样本对应模型 Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/6a1483b5be1547b1acd7940f867be0da 思路 编辑距离问题 什么是两个字符串的编辑距离&#xff08;edit distance&#xff09;&#xff1f;给定字符串s1和s2&#xff0c;以及在s1上的如下操作&#xff1a;插入&…

【ARM】DSTREAM上面的各个指示灯代表什么意思?

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 对于DStream仿真器上面的指示灯亮灭代表的意义进行分析。 2、 问题场景 主要对于DStream仿真器的使用过程中&#xff0c;不同的情况下面仿真器的指示灯会进行相应的亮灭。了解一下不同指示灯的亮灭所提示的信息…

部署Prometheus+grafana详解

目录 一、prometheus 介绍 二、prometheus 对比 zabbix 三、prometheus 监控插件 四、部署 1、下载所需的包 2.编辑prometheus的配置文件 3、编辑alertmanager 的配置文件 4、tmpl 模板&#xff08;将此文件创建在/opt/alertmanager/tmpl/&#xff09; 5.启动&#xff0…

Google colab中如何从kaggle中接入数据?

写在前面 使用google colab进行数据分析和探索时&#xff0c;可引用的数据源包括但不限于&#xff1a;1.可上传的数据文件用本地加载的的方式打开数据资源&#xff1b;2.从网络链接中直接打开后加载到缓存中的文件资源&#xff1b;3.通过API或者外部的开放接口加载数据&#x…

人生亏钱指南pdf分享【谨防上当】【警钟长鸣】不知道动了多少人蛋糕,看到后赶快收藏起来

查理芒格&#xff1a;如果知道我会死在哪里&#xff0c;那我将永远不去那个地方 书中分别投资篇、知识付费篇、合伙合作篇、实体项目篇、欺诈篇、借贷篇、健康篇等方向详细解释可能亏钱的坑&#xff01; 书中说到&#xff1a; 成年人的世界&#xff0c;踩坑已是日常&#xff0…

java框架 2 springboot 过滤器 拦截器 异常处理 事务管理 AOP

Filter 过滤器 对所有请求都可以过滤。 实现Filter接口&#xff0c;重写几个方法&#xff0c;加上WebFilter注解&#xff0c;表示拦截哪些路由&#xff0c;如上是所有请求都会拦截。 然后还需要在入口处加上SvlterComponentScan注解&#xff0c;因为Filter是javaweb三大组件之…

计算机二级C语言的注意事项及相应真题-6-程序设计

目录 51.将a所指数组主对角线上的元素分别乘以2;次对角线上的元素分别乘以3&#xff0c;依次放入指针p所指的数组中。计算过程中不得修改a所指数组中的数据52.将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的十位和千位…

面试算法-62-盛最多水的容器

题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容器。…

Java------数据结构之栈与队列(简单讲解)

本篇碎碎念&#xff1a;时隔n个月&#xff0c;继续写博客&#xff0c;假期落下的进度&#xff0c;在开学后努力追赶&#xff0c;假期不努力&#xff0c;开学徒伤悲啊&#xff0c;此时此刻真想对自己说一句&#xff0c;活该啊~~~~ 欠下的链表练习题讲解会在下次更新~~~~ 今日份励…

基于Springboot的在线投稿系统+数据库+免费远程调试

项目介绍: Javaee项目&#xff0c;springboot项目。采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringBoot Mybatis VueMavenLayui来实现。MySQL数据库作为系统数据储存平台&a…

第十二届蓝桥杯省赛CC++ 研究生组-砝码称重

solution1&#xff08;通过10%&#xff09; 写了几种可能的组合方式&#xff0c;骗到一丢丢分数 #include<iostream> #include<algorithm> #include<map> using namespace std; int main(){int n, a[110], count 0, sum[110] {0};map<int, int> mp…

Windows系统部署GoLand结合内网穿透实现SSH远程Linux服务器开发调试

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-HIOuHATnug3qMHzx {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

PTA L2-041 插松枝 代码附注释

人造松枝加工场的工人需要将各种尺寸的塑料松针插到松枝干上&#xff0c;做成大大小小的松枝。他们的工作流程&#xff08;并不&#xff09;是这样的&#xff1a; 每人手边有一只小盒子&#xff0c;初始状态为空。每人面前有用不完的松枝干和一个推送器&#xff0c;每次推送一…

本地项目文件夹创建python文件并配置conda环境的完整流程

1 在Pycharm中创建新项目 位置就是本地的项目文件夹 2 接着打开pycharm的终端 创建conda环境&#xff08;这个过程需要保证conda.exe能够被系统路径识别&#xff09; conda create --name my_environment&#xff08;my_environment取自己想要的环境名字&#xff09; 还可以指…

(附源码)基于Spring Boot + Vue的校园综合信息服务平台设计与实现

前言 &#x1f497;博主介绍&#xff1a;✌专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2024年Java精品实战案例《100套》 &#x1f345;文末获取源码联系&#x1f345; &#x1f31…