多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测
多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测
目录
- 多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测
- 预测效果
- 基本介绍
- 程序设计
- 参考资料
预测效果







基本介绍
1.Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测;
2.运行环境为Matlab2021及以上;
3.输入多个特征,输出单个变量,考虑历史特征的影响,多变量时间序列预测;
4.data为数据集,main1_VMD.m、main2_VMD_CNN_GRU.m为主程序,运行即可,所有文件放在一个文件夹;
5.命令窗口输出R2、MSE、MAE、MAPE和RMSE多指标评价;
VMD-CNN-GRU是一种结合了变分模态分解(VMD)、卷积神经网络(CNN)和门控循环单元(GRU)的多变量时间序列预测模型。这种模型在处理复杂时间序列数据时,能够有效地提取特征、捕捉时间依赖关系,并进行准确的预测。
首先,变分模态分解(VMD)是一种自适应的信号处理方法,能够将原始时间序列数据分解为一系列具有不同频率的子序列。这种分解有助于提取出数据中的关键特征,并降低噪声对预测结果的影响。
接下来,卷积神经网络(CNN)被用于进一步处理这些子序列。CNN具有强大的特征提取能力,能够自动学习并提取出子序列中的有用信息。通过卷积操作,CNN可以有效地捕捉到数据中的局部特征和空间依赖关系。
然后,门控循环单元(GRU)被用来处理经过CNN处理后的数据。GRU是一种循环神经网络(RNN)的变体,它具有更好的长期依赖关系捕捉能力。通过GRU的更新门和重置门机制,模型可以学习到时间序列数据中的时间依赖关系,并生成准确的预测结果。
程序设计
- 完整程序和数据获取方式资源处下载Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测。
%% 清空环境变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行%% 导入数据
res =xlsread('data.xlsx');%% 数据分析
num_size = 0.7; % 训练集占数据集比例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);f_ = size(P_train, 1); % 输入特征维度%% 数据归一化
[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);% 输入特征sequenceInputLayer([numFeatures,1,1],'name','input') %输入层设置sequenceFoldingLayer('name','fold') %使用序列折叠层对图像序列的时间步长进行独立的卷积运算。% CNN特征提取convolution2dLayer([3,1],16,'Stride',[1,1],'name','conv1') %添加卷积层,64,1表示过滤器大小,10过滤器个数,Stride是垂直和水平过滤的步长batchNormalizationLayer('name','batchnorm1') % BN层,用于加速训练过程,防止梯度消失或梯度爆炸reluLayer('name','relu1') % ReLU激活层,用于保持输出的非线性性及修正梯度的问题% 池化层maxPooling2dLayer([2,1],'Stride',2,'Padding','same','name','maxpool') % 第一层池化层,包括3x3大小的池化窗口,步长为1,same填充方式% 展开层sequenceUnfoldingLayer('name','unfold') %独立的卷积运行结束后,要将序列恢复%平滑层flattenLayer('name','flatten')gruLayer(25,'Outputmode','last','name','hidden1') dropoutLayer(0.2,'name','dropout_1') % Dropout层,以概率为0.2丢弃输入fullyConnectedLayer(1,'name','fullconnect') % 全连接层设置(影响输出维度)(cell层出来的输出层) %
参考资料
[1] https://blog.csdn.net/kjm13182345320/category_11799242.html?spm=1001.2014.3001.5482
[2] https://blog.csdn.net/kjm13182345320/article/details/124571691
相关文章:
多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测
多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测 目录 多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现VMD-CN…...
基于springboot+vue的毕业论文管理系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 主要内容:毕业设计(Javaweb项目|小程序|Pyt…...
JavaWeb后端——分层解耦 IOC DI
分层/三层架构概述 三层架构:Controller、Service、Dao 解耦/IOC&DI概述 分层解耦 容器称为:IOC容器/Spring容器 IOC 容器中创建,管理的对象,称为:bean 对象 IOC&DI入门 实现 IOC&DI 需要的注解&#…...
短视频矩阵系统技术交付
短视频矩阵系统技术交付,短视频矩阵剪辑矩阵分发系统现在在来开发这个市场单个项目来说,目前基本上已经沉淀3年了,那么我们来就技术短视频矩阵剪辑系统开发来聊聊 短视频矩阵系统经过315大会以后,很多违规的技术开发肯定有筛选到了…...
Halcon 凹坑检测案例
* 使用元组的方法 ImageFile:[] ImageFile[0]:D:/Halcon/产品上的凹坑检测/1.bmp ImageFile[1]:D:/Halcon/产品上的凹坑检测/2.bmp for Index : 0 to |ImageFile|-1 by 1read_image (Image, ImageFile[Index])* 二值化threshold (Image, Region, 100, 255)* 连通性connection (…...
MD5算法:密码学中的传奇
title: MD5算法:密码学中的传奇 date: 2024/3/15 20:08:07 updated: 2024/3/15 20:08:07 tags: MD5起源算法原理安全分析优缺点比较技术改进示例代码应用趋势 MD5算法起源: MD5(Message Digest Algorithm 5)算法是由MIT的计算机…...
microk8s使用本地私服registry的镜像http协议
开发环境为了能部署服务到microk8s,我们开启了一个本地私库,地址为:http://localhost:5000,那么如何在microk8s中能拉取本地私库中的镜像呢? 直接部署的话,microk8s会用https协议去拉取镜像,所以必须要配置…...
C++初阶 | [九] list 及 其模拟实现
摘要:介绍 list 容器,list 模拟实现,list与vector的对比 list(带头双向循环列表) 导入:list 的成员函数基本上与 vector 类似,具体内容可以查看相关文档(cplusplus.com/reference/list/list/)&…...
如何将Excel两列数据转换为统计图、曲线图、折线图?如何自定义某一列作为Excel的统计图横纵坐标?
这样,横坐标就更换为指定选中的数据了 我们还可以修改统计图的样式 也可以修改统计图的类型...
[HackMyVM] Quick
kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Un…...
算法体系-12 第 十二 二叉树的基本算法
一 实现二叉树的按层遍历 1.1 描述 1)其实就是宽度优先遍历,用队列 2)可以通过设置flag变量的方式,来发现某一层的结束(看题目)看下边的第四题解答 1.2 代码 public class Code01_LevelTraversalBT {publ…...
【论文笔记合集】LSTNet之循环跳跃连接
本文作者: slience_me LSTNet 循环跳跃连接 文章仅作为个人笔记 论文链接 文章原文 LSTNet [25] introduces convolutional neural networks (CNNs) with recurrent-skip connections to capture the short-term and long-term temporal patterns. LSTNet [25]引入…...
数据库关系运算理论:关系数据操作与关系完整性概念解析
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
Linux基础开发工具之yum与vim
1. Linux软件包管理器——yum 1.1 什么是软件包? 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, …...
【正则表达式】正则表达式里使用变量
码 const shuai No My Name Is ShuaiGe.match(new RegExp(shuai, gi)); //↑↑↑↑↑↑↑↑ //等同于 //↓↓↓↓↓↓↓↓ /No/gi.test(My Name Is ShuaiGe)用作领域 搜索的字符动态改变,例如↓模糊搜索例: 一个文本宽,输入文本模糊搜索用…...
Java中的可变参数
java提供了可变参数这个语法。 可变参数本质为数组。 一般可变参数应用于形参中。用于接收实参。 此时实参可以有多种形式。 一种是最正常的,实参为数组名。 public class Date1 {public void one(int ... arr){int sum0;for (int x:arr){sumx;}System.out.pri…...
如何实现在固定位置的鼠标连点
鼠大侠的鼠标连点功能是免费的 浏览器搜索下载鼠大侠,指定连点间隔和启动快捷键 点击设置,指定点击位置...
15|BabyAGI:根据气候变化自动制定鲜花存储策略
一种新型的代理——Autonomous Agents(自治代 理或自主代理), 在 LangChain 的代理、工具和记忆这些组件的支持下,它们能够在无需外部干预的情况下自主 运行,这在真实世界的应用中具有巨大的价值。 AutoGPT 它的主要…...
二进制安全找实习记录
就安全岗而言,这里笔者仅仅面试了腾讯的科恩实验室内核安全和浏览器安全(其它的就面了一下前后端开发,这就不说了,笔者也没打算搞开发),然后倒在了一面。然后有的问题忘记了,仅仅记录一下自己回…...
列表(list)篇(一)
文章目录 2.1 创建列表2.2 append()函数2.3 clear()函数2.4 copy()函数2.5 count()函数2.6 del2.7 enumerate()函数2.8 extend()函数2.9 index()函数 2.1 创建列表 在Python中,列表(list)是一种基础的数据结构,可以包含不同类型的…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
