当前位置: 首页 > news >正文

EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测

目录

    • EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测
      • 预测效果
      • 基本介绍
      • 程序设计
      • 参考资料

预测效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基本介绍

1.【EI级】Matlab实现TCN-BiLSTM-Multihead-Attention时间卷积双向长短期记忆神经网络融合多头注意力机制多变量时间序列预测;
多头自注意力层 (Multihead-Self-Attention):Multihead-Self-Attention多头注意力机制是一种用于模型关注输入序列中不同位置相关性的机制。它通过计算每个位置与其他位置之间的注意力权重,进而对输入序列进行加权求和。注意力能够帮助模型在处理序列数据时,对不同位置的信息进行适当的加权,从而更好地捕捉序列中的关键信息。在时序预测任务中,注意力机制可以用于对序列中不同时间步之间的相关性进行建模。
2.运行环境为Matlab2023a及以上;
3.data为数据集,输入多个特征,输出单个变量,考虑历史特征的影响,多变量时间序列预测,main.m为主程序,运行即可,所有文件放在一个文件夹;
4.命令窗口输出R2、MSE、RMSE、MAE、MAPE、MBE等多指标评价。

在这里插入图片描述

程序设计

  • 完整程序和数据获取方式:私信博主回复Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测获取。
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%%  划分训练集和测试集
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);
%%  相关指标计算
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%  MAPE
maep1 = sum(abs(T_sim1 - T_train)./T_train) ./ M ;
maep2 = sum(abs(T_sim2 - T_test )./T_test) ./ N ;
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
disp(['训练集数据的MAPE为:', num2str(maep1)])
disp(['测试集数据的MAPE为:', num2str(maep2)])
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%  RMSE
RMSE1 = sqrt(sumsqr(T_sim1 - T_train)/M);
RMSE2 = sqrt(sumsqr(T_sim2 - T_test)/N);
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
disp(['训练集数据的RMSE为:', num2str(RMSE1)])
disp(['测试集数据的RMSE为:', num2str(RMSE2)])

参考资料

[1] http://t.csdn.cn/pCWSp
[2] https://download.csdn.net/download/kjm13182345320/87568090?spm=1001.2014.3001.5501
[3] https://blog.csdn.net/kjm13182345320/article/details/129433463?spm=1001.2014.3001.5501

http://www.lryc.cn/news/249434.html

相关文章:

  • 基于安卓的2048益智游戏的设计与实现
  • 解决Linux Visual Studio Code显示字体有问题/Liunx下Visual Studio Code更换字体
  • CityEngine2023 根据shp数据构建三维模型并导入UE5
  • 修复电脑中缺失的VCRUNTIME140.dll文件的5个有效方法
  • 什么是PDN的交流阻抗?
  • FFmpeg之将视频转为16:9(横屏)或9:16(竖屏)(一)
  • Web安全漏洞分析-XSS(上)
  • MVCC多版本并发控制相关面试题整理
  • 02-鸿蒙学习之4.0todoList练习
  • springsecurity5.7.x和springsecurity6.x配置文件对比
  • brat文本标注工具——安装
  • 麒麟操作系统网桥配置
  • 禁奥义·SQL秘籍
  • 浅谈用户体验测试的主要功能
  • 2021年6月3日 Go生态洞察:Fuzzing技术的Beta测试
  • 全新Self-RAG框架亮相,自适应检索增强助力超越ChatGPT与Llama2,提升事实性与引用准确性
  • 句子相似度计算
  • 高级IO select 多路转接实现思路
  • C++学不会?一篇文章带你快速入门
  • 【加密相册】 隐私协议
  • 超越基础:释放 Systemd 的全部潜力【systemd 二】
  • Flask学习二:项目拆分、请求与响应、cookie
  • 6、Qt延时的使用
  • 《Effective C++》条款26
  • np.random.uniform() 采样得到的是一个高维立方体,而不是球体,为什么?
  • 1 时间序列模型入门: LSTM
  • 1-Python与设计模式--单例模式
  • Rust之构建命令行程序(一):接受命令行参数
  • Go 谈论了解Go语言
  • 《C++PrimerPlus》第9章 内存模型和名称空间