回归预测 | MATLAB实现TCN-BiLSTM时间卷积双向长短期记忆神经网络多输入单输出回归预测

news2024/11/23 1:53:01

回归预测 | MATLAB实现TCN-BiLSTM时间卷积双向长短期记忆神经网络多输入单输出回归预测

目录

    • 回归预测 | MATLAB实现TCN-BiLSTM时间卷积双向长短期记忆神经网络多输入单输出回归预测
      • 预测效果
      • 基本介绍
      • 模型描述
      • 程序设计
      • 参考资料

预测效果

1

2
3
4
5

6
7

基本介绍

1.MATLAB实现TCN-BiLSTM时间卷积双向长短期记忆神经网络多输入单输出回归预测;
2.运行环境为Matlab2021b;
3.输入多个特征,输出单个变量,多变量回归预测;
4.data为数据集,excel数据,前7列输入,最后1列输出,MainTCN_BiLSTMNN.m为主程序,运行即可,所有文件放在一个文件夹;
5.命令窗口输出RMSE、MAE、MAPE多指标评价。

模型描述

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

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

程序设计

  • 完整源码和数据获取方式1:私信博主回复MATLAB实现TCN-BiLSTM时间卷积双向长短期记忆神经网络多输入单输出回归预测
  • 完整程序和数据下载方式2(订阅《组合优化》专栏,同时获取《组合优化》专栏收录的任意8份程序,数据订阅后私信我获取):MATLAB实现TCN-BiLSTM时间卷积双向长短期记忆神经网络多输入单输出回归预测
%% 预测
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/789781.html

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

相关文章

MonsterInsights Pro 8.18.0 Google Analytics + All Addons Pack

MonsterInsights适用于 WordPress 的 Google Analytics(分析)插件,功能强大 MonsterInsights 是适用于 WordPress 的最佳 Google Analytics(分析)插件。这些功能使 MonsterInsights 成为市场上功能最强大且用户友好的 …

网络通信原理(第十八课)

网络通信原理(第十八课) 4.1 回顾 1.什么是TCP/IP 目前应用广泛的网络通信协议集 国际互联网上电脑相互通信的规则、约定。 2.主机通信的三要素 IP地址:用来标识一个节点的网络地址(区分网络中电脑身份的地址,如人有名字) 子网掩码:配合IP地址确定网络号 IP路由:网…

Linux笔记——磁盘进行分区与挂载介绍

系列文章目录 Linux笔记——管道相关命令以及shell编程 文章目录 系列文章目录 前言 分区与挂载 1 分区 1.1 分区示意图​编辑 1.2 分区介绍 2 硬盘的挂载 3 增加一块硬盘 3.1 增加一块硬盘 3.2 硬盘进行分区 3.3 格式化磁盘 4 卸载 5 查看磁盘使用情况 6 一些…

javascript 7种继承-- 原型链继承分析(1)

文章目录 概要继承的进化史技术名词解释原型链的作用原型链继承案列分析源代码解析效果图预留问题小结 概要 这阵子在整理JS的7种继承方式,发现很多文章跟视频,讲解后都不能让自己理解清晰,索性自己记录一下,希望个位发表需要修改…

10分钟实现任务调度平台搭建

日常项目中,会有很多需要定时执行的任务,而这些任务的变化比较多,可能随时都要调整,那么对调度的灵活性要求比较高。我们传统的Spring Task或者Quartz,可以实现定时任务调度,但是内置在代码里,修…

Matlab Kappa系数和总体精度OA计算

axlsread(D:\homework\精度验证产品.xlsx); Predicteda(:,1); vala(:,2); g0; for i1:size(a,1) %记录验证结果是否与实际值一致if(Predicted(i)val(i))gg1;end end OAg/(size(a,1));% 计算混淆矩阵 confusion_matrix confusionmat(val, Predicted);% 计算总样本数 total_sa…

全方位对比 Postgres 和 MongoDB (2023 版)

本文为「数据库全方位对比系列」第二篇,该系列的首部作品为「全方位对比 Postgres 和 MySQL (2023 版)」 为何对比 Postgres 和 MongoDB 根据 2023 年 Stack Overflow 调研,Postgres 已经成为最受欢迎和渴望的数据库了。 MongoDB 曾连续 4 年 (2017 - …

Qt Core学习日记——第九天QObjectData

本文结合示例代码更易理解&#xff0c;moc_XTest.cpp文件是写好XTest.h、XTest.cpp后由qt编译生成 版本 Qt5.15.2 示例代码 XTest.h #pragma once #include <qobject.h> #include <QFlags> class XTest : public QObject { Q_OBJECT Q_CLASSINFO("au…

【JavaEE初阶】HTTP请求的构造及HTTPS

文章目录 1.HTTP请求的构造1.1 from表单请求构造1.2 ajax构造HTTP请求1.3 Postman的使用 2. HTTPS2.1 什么是HTTPS?2.2 HTTPS中的加密机制(SSL/TLS)2.2.1 HTTP的安全问题2.2.2 对称加密2.2.3 非对称加密2.2.3 中间人问题2.2.5 证书 1.HTTP请求的构造 常见的构造HTTP 请求的方…

数组(超详解)

数组 1.一维数组1.1 一维数组的创建1.2 数组的初始化1.3 一维数组的使用1.4 一维数组在内存中的储存 2. 二维数组2.1 二维数组的创建2.2 二维数组的初始化2.3 二维数组的使用2.4 二维数组在内存中的储存 3.数组越界4.数组作为函数参数4.1 冒泡排序函数错误设计4.2 数组名是什么…

Gnomon水下环境 中

海下的石头 方法一 nParticleShape1.zhong_lie rand(0,6); nParticleShape1.xuan_zhuanrand(<<0,0,0>>,<<5,360,5>>); 缩放原始物体 写错地方了&#xff0c;播放石头一样 海下的石头 方法二 有点问题&#xff0c;使用旧粒子系统 让第一针有粒子 播…

基于SpringBoot+Vue的摄影跟拍预定管理系统设计与实现(源码+lw+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

Idea 开启 lombook 注解插件处理器

Idea 开启 lombook 注解插件处理器 方便编译器识别 勾选 Enable annotation processing

【每日一题】—— C. K-th Not Divisible by n (Codeforces Round 640 (Div. 4))

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…

【雕爷学编程】Arduino动手做(86)---4*4位 WS2812 全彩模块3

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

导轨表和智能电表有哪些区别?

导轨表和智能电表是两种不同的电表类型&#xff0c;它们在功能、性能和应用领域等方面存在一些区别。下面将从多个方面对这两种电表进行比较和分析。 一、定义和功能 导轨表是一种多功能电力仪表&#xff0c;通常用于测量电流、电压、功率、能量等电参数。它采用模块化设计&am…

小黑子—JavaWeb:第三章 HTTP、Tomcat与Servlet

JavaWeb入门3.0 1. Web核心项目2. HTTP2.2 HTTP请求数据格式2.3 HTTP响应数据格式 3. Tomcat3.1 tomact的基本使用3.2 tomact配置3.3 tomact部署项目3.4 web项目结构3.5 创建MavenWeb项目3.6 IDEA集成本地Tomcat3.7 Tomcat的Maven插件 4. Servlet4.1 Servlet执行流程4.2 Servle…

使用jmeter+ant+jenkins+git搭建自动化测试平台

最近正在学习自动化测试&#xff0c;于是随手搭建了一下jmeterantjenkinsgit平台。 接下来&#xff0c;我会按照jdk&#xff0c;jmeter&#xff0c;ant&#xff0c;jenkins,git这个顺序一步一步的搭建起来。 一、jdk。这个就不多说了。我用的是1.8版本的&#xff0c;配环境变…

c++语言风格字符串和QT风格字符串区别

c语言风格字符串和QT风格字符串区别 API实例 第一个是QT风格字符串 第二个是C风格字符串 c语言风格 string a "hello";std::cout<<a<<endl;;char* aa "hello";qDebug()<<aa;qDebug()<<*aa;QT风格 QString str2("hello2&qu…

VarifocalNet An IoU-aware Dense Object Detector 论文学习

1. 解决了什么问题&#xff1f; 密集目标检测器会预测出大量的候选检测框&#xff0c;如何准确地对它们进行排序是取得优异性能的关键。以前的方法通常会在 NMS 时根据类别得分对预测框做排序&#xff0c;但这可能损害模型表现&#xff0c;因为类别得分并不能体现边框定位的准…