回归预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元多输入单输出回归预测

news2024/12/23 9:16:15

回归预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元多输入单输出回归预测

目录

    • 回归预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元多输入单输出回归预测
      • 预测效果
      • 基本介绍
      • 模型描述
      • 程序设计
      • 参考资料

预测效果

1
2

3

4
5
![67

基本介绍

1.MATLAB实现TCN-BiGRU时间卷积双向门控循环单元多输入单输出回归预测;
2.运行环境为Matlab2021b;
3.输入多个特征,输出单个变量,多变量回归预测;
4.data为数据集,excel数据,前7列输入,最后1列输出,MainTCN_BiGRUNN.m为主程序,运行即可,所有文件放在一个文件夹;
5.命令窗口输出RMSE、MAE、MAPE多指标评价;
TCN 模型通过一维因果卷积对过去的数据进行提取,保证时序性,残差连接加快收敛速度,扩张卷积实现时序特征提取。BiGRU模型作为循环神经网络的变种,具有非线性拟合能力,能够有效提取数据特征,且在保障得到与LSTM 相近预测效果的同时获得更快的收敛速度。文中将两者结合搭建了TCN-BiGRU模型。

模型描述

由于TCN 具有扩张因果卷积结构,拥有突出的特征提取能力,因此可对原始特征进行融合获得高维的抽象特征,加强了对特征信息的挖掘。而
BiGRU 网络具有强大的时序预测能力,将TCN 和BiGRU网络结合,通过TCN 特征提取后输入至BiGRU 网络,提高了BiGRU网络记忆单元的处理效
率,使得预测模型更有效地学习时间序列的复杂交互关系。因此,本文搭建了TCN-BiGRU预测模型。

TCN-BiGRU是一种将时间卷积神经网络(TCN)和双向门控循环单元(BiGRU)结合在一起的神经网络模型。TCN是一种能够处理序列数据的卷积神经网络,它能够捕捉到序列中的长期依赖关系。BiGRU则是一种具有记忆单元的递归神经网络,它能够处理序列数据中的短期和长期依赖。
TCN-BiGRU模型的输入可以是多个序列,每个序列可以是不同的特征或变量。例如,如果我们想预测某个城市未来一周的平均温度,我们可以将过去一段时间内的温度、湿度、气压等多个变量作为输入序列。模型的输出是一个值,即未来某个时间点的平均温度。
在TCN-BiGRU中,时间卷积层用于捕捉序列中的长期依赖关系,BiGRU层用于处理序列中的短期和长期依赖。多个输入序列被合并成一个张量,然后送入TCN-BiGRU网络进行训练。在训练过程中,模型优化目标是最小化预测输出与真实值之间的差距。
TCN-BiGRU模型在时间序列预测和回归问题上表现良好,特别是对于长期依赖的序列数据。它可以被用于许多应用场景,例如股票价格预测、交通流量预测等。

程序设计

  • 完整源码和数据获取方式1:私信博主回复TCN-BiGRU时间卷积双向门控循环单元多输入单输出回归预测
  • 完整程序和数据下载方式2(订阅《组合优化》专栏,同时获取《组合优化》专栏收录的任意8份程序,数据订阅后私信我获取):MATLAB实现MATLAB实现TCN-GRU时间卷积门控循环单元多输入单输出回归预测,专栏外只能获得该程序。
%% 预测
t_sim1 = predict(net, p_train); 
t_sim2 = predict(net, p_test ); 

%%  数据反归一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);

%%  均方根误差
error1 = sqrt(sum((T_sim1' - T_train).^2) ./ M);
error2 = sqrt(sum((T_sim2' - T_test ).^2) ./ N);


%%  相关指标计算

%  MAE
mae1 = sum(abs(T_sim1' - T_train)) ./ M ;
mae2 = sum(abs(T_sim2' - T_test )) ./ N ;

disp(['训练集数据的MAE为:', num2str(mae1)])
disp(['测试集数据的MAE为:', num2str(mae2)])

%% 平均绝对百分比误差MAPE
MAPE1 = mean(abs((T_train - T_sim1')./T_train));
MAPE2 = mean(abs((T_test - T_sim2')./T_test));

disp(['训练集数据的MAPE为:', num2str(MAPE1)])
disp(['测试集数据的MAPE为:', num2str(MAPE2)])

%  MBE
mbe1 = sum(abs(T_sim1' - T_train)) ./ M ;
mbe2 = sum(abs(T_sim1' - T_train)) ./ N ;

disp(['训练集数据的MBE为:', num2str(mbe1)])
disp(['测试集数据的MBE为:', num2str(mbe2)])

%均方误差 MSE
mse1 = sum((T_sim1' - T_train).^2)./M;
mse2 = sum((T_sim2' - T_test).^2)./N;

disp(['训练集数据的MSE为:', num2str(mse1)])
disp(['测试集数据的MSE为:', num2str(mse2)])

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/128577926?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm13182345320/article/details/128573597?spm=1001.2014.3001.5501

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

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

相关文章

RT-Thread qemu mps2-an385 bsp 移植制作 :系统启动篇

前言 前面准备了 RT-Thread qemu mps2-an385 bsp 制作相关的环境与相关文件,本篇开始讲解 bsp 如何适配到 RT-Thread CPU 部分已经适配好了,也就是通过 使能 ARCH_ARM_CORTEX_M3 ,来使能 rt-thread/libcpu/arm/cortex-m3,这部分不…

使用docker进行MYSQL主从复制(一主两从)

目录 概述主从介绍 主从作用 主从作用有: 主从形式有: 配置步骤 主要配置 1>创建三个进程 2>修改配置文件 3>主机配置 4>从机配置 5>将文件修改后,复制到容器里面 6>进入主机进行配置 6.1>创建用户 6.2>…

从0到1完成UI自动化测试框架搭建之Pytest

上篇文章中,我们学会了如何使用UI Automator2atx编写简单的Android自动化脚本。 但是有个问题,大家可以思考下,光用自动化脚本让它自己动起来,是不是缺了点什么? 我们写测试用例的时候,是不是经常写&…

【C++】string的深入学习与模拟实现

🚀write in front🚀 📜所属专栏:初阶数据结构 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是对…

Python 模块 ddt 数据驱动测试

简介 ddt 提供了一种方便的方法来实现数据驱动测试(Data-Driven Testing)。数据驱动测试是一种测试方法,通过将测试数据与测试逻辑分开,可以使用不同的数据集来运行相同的测试用例。这样可以提高测试的灵活性和可维护性&#xff0…

SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为数据...

全文链接:http://tecdat.cn/?p32118 假如你有一个购物类的网站,那么你如何给你的客户来推荐产品呢?(点击文末“阅读原文”获取完整文档、数据) 相关视频 这个功能在很多电商类网站都有,那么,通…

Flink CEP (一)原理及概念

目录 1.Flink CEP 原理 2.Flink API开发 2.1 模式 pattern 2.2 模式 pattern属性 2.3 模式间的关系 1.Flink CEP 原理 Flink CEP内部是用NFA(非确定有限自动机)来实现的,由点和边组成的一个状态图,以一个初始状态作为起点&am…

Unity进阶-消息框架的理论知识与实际操作学习笔记

文章目录 Unity进阶-消息框架的理论知识与实际操作学习笔记 Unity进阶-消息框架的理论知识与实际操作学习笔记 笔记来源课程:https://study.163.com/course/courseMain.htm?courseId1212756805&_trace_c_p_k2_8c8d7393c43b400d89ae94ab037586fc 这种框架其实…

实现锂电池形状的数据可视化css+js

1.效果图 2.需求根据后端返回数据改变里面的高度 HTML&#xff1a; <div class"dianchichi"><div class"limian" id"divElementId"></div></div> css: .dianchichi {width: 84px;height: 146px;display: flex;justify-…

Two Days wpf 分享 分页组件

迟来的wpf分享。 目录 一、序言 二、前期准备 三、前端界面 四、后台代码部分 1、先定义些变量后面使用 2、先是按钮事件代码。 首页按钮 上一页按钮 下一页按钮 末尾按钮 画每页显示等数据 每页显示多少条 判断是否为数字的事件 分页数字的点击触发事件 跳转到…

Docker安装Nexus并配置Maven私服

1 准备工作 1 服务器已安装docker, docker各命令无报错 2 通过dockerhub查看nexus的版本信息&#xff0c;此次使用的镜像为&#xff1a;sonatype/nexus3&#xff0c;可以看到latest版本更前的的是3.58.0&#xff0c;我们这次就使用这个版本的nexus3. 2 开始安装 # 下载镜像 do…

springcloudAlibaba之springboot如何加载nacos配置文件

配置文件想必大家都很熟悉&#xff0c;无论什么架构 都离不开配置&#xff0c;虽然spring boot已经大大简化了配置&#xff0c;但如果服务很多 环境也好几个&#xff0c;管理配置起来还是很麻烦&#xff0c;并且每次改完配置都需要重启服务&#xff0c;nacos config出现就解决了…

【JavaEE】Servlet常用的API

目录 前言 一、HttpServlet类 1、Servlet的生命周期 ✨tomcat的两个端口 ✨设置告诉浏览器使用那种字符集解析响应 ✨Java中Unicode和utf8字符集的使用 二、HttpServletRequest类 1、获取请求的信息 2、 前端给后端传递数据的三种方式 2.1、通过query string传递 2.2…

unity--2d( A*寻路)

目录 一.网格式寻路 1.创建一个A*寻路脚本&#xff0c;命名为"AStarPathfinding.cs"。 2.创建一个人物控制的脚本&#xff0c;命名为"CharacterController2D.cs"。 3.创建一个游戏管理脚本&#xff0c;命名为"GameManager.cs"。 二.UGUI下的…

《零基础入门学习Python》第063讲:论一只爬虫的自我修养11:Scrapy框架之初窥门径

上一节课我们好不容易装好了 Scrapy&#xff0c;今天我们就来学习如何用好它&#xff0c;有些同学可能会有些疑惑&#xff0c;既然我们懂得了Python编写爬虫的技巧&#xff0c;那要这个所谓的爬虫框架又有什么用呢&#xff1f;其实啊&#xff0c;你懂得Python写爬虫的代码&…

基于半监督算法的工业图像缺陷检测方法:MemSeg

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文&#xff1a;https://arxiv.org/ftp/arxiv/papers/2205/2205.00908.pdf 代码&#xff1a;https://github.com/TooTouch/MemSeg 主要贡献 提出了一个精心设计的异常模拟策略&#xff0c;用于模型的自监督…

缓存雪崩问题及解决思路

缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力。为了解决这个问题&#xff0c;我们可以采取以下几种方案。 1. 给不同的Key的TTL添加随机值 在设置缓存的过期时间&#xff08;TTL&#xff09;时…

PhpStudy靶场首页管理

PhpStudy靶场首页管理 一、源码一二、源码二三、源码三四、源码四 一、源码一 index.html <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>靶场访问首页</title><style>body {background-color: #f2f2f2;colo…

一个月学通Python(二十三):RESTful架构和DRF入门

专栏介绍 结合自身经验和内部资料总结的Python教程&#xff0c;每天3-5章&#xff0c;最短1个月就能全方位的完成Python的学习并进行实战开发&#xff0c;学完了定能成为大佬&#xff01;加油吧&#xff01;卷起来&#xff01; 全部文章请访问专栏&#xff1a;《Python全栈教…

【字符流】案例:集合到文件(改进版)

案例&#xff1a;集合到文件&#xff08;改进版&#xff09; 1.需求&#xff1a; 把ArrayList集合中的学生数据写入到文本文件。要求&#xff1a;每一个学生对象的数据作为文件中的一行数据 ​ 格式&#xff1a;学号&#xff0c;姓名&#xff0c;年龄&#xff0c;居住地 2.思…