一区鱼鹰优化算法+深度学习+注意力机制!OOA-TCN-LSTM-Attention多变量时间序列预测

news2024/10/22 5:16:50

一区鱼鹰优化算法+深度学习+注意力机制!OOA-TCN-LSTM-Attention多变量时间序列预测

目录

    • 一区鱼鹰优化算法+深度学习+注意力机制!OOA-TCN-LSTM-Attention多变量时间序列预测
      • 预测效果
      • 基本介绍
      • 程序设计
      • 参考资料

预测效果

在这里插入图片描述

在这里插入图片描述

基本介绍

1.基于OOA-TCN-LSTM-Attention的鱼鹰算法优化时间卷积长短期记忆神经网络融合注意力机制多变量时间序列预测,要求Matlab2023版以上,自注意力机制,一键单头注意力机制替换成多头注意力机制;
2.输入多个特征,输出单个变量,考虑历史特征的影响,多变量时间序列预测;
3.data为数据集,main.m为主程序,运行即可,所有文件放在一个文件夹;
4.命令窗口输出R2、MSE、MAE、MAPE和RMSE多指标评价;
5.优化学习率,神经元个数,注意力机制的键值,正则化参数。

程序设计

  • 完整源码和数据获取方式私信博主回复Matlab实现一区鱼鹰优化算法+深度学习+注意力机制!OOA-TCN-LSTM-Attention多变量时间序列预测


clc;
clear 
close all

X = xlsread('data.xlsx');
num_samples = length(X);                            % 样本个数 
kim = 6;                      % 延时步长(kim个历史数据作为自变量)
zim =  1;                      % 跨zim个时间点进行预测
or_dim = size(X,2);

%  重构数据集
for i = 1: num_samples - kim - zim + 1
    res(i, :) = [reshape(X(i: i + kim - 1,:), 1, kim*or_dim), X(i + kim + zim - 1,:)];
end


% 训练集和测试集划分
outdim = 1;                                  % 最后一列为输出
num_size = 0.9;                              % 训练集占数据集比例
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);

%  数据归一化
[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);

%  格式转换
for i = 1 : M 
    vp_train{i, 1} = p_train(:, i);
    vt_train{i, 1} = t_train(:, i);
end

for i = 1 : N 
    vp_test{i, 1} = p_test(:, i);
    vt_test{i, 1} = t_test(:, i);
end



%% 优化算法优化前,构建优化前的TCN_BiGRU_Attention模型

outputSize = 1;  %数据输出y的维度  
numFilters = 64;
filterSize = 5;
dropoutFactor = 0.1;
numBlocks = 2;

layer = sequenceInputLayer(f_,Normalization="rescale-symmetric",Name="input");
lgraph = layerGraph(layer);     convolution1dLayer(filterSize,numFilters,DilationFactor=dilationFactor,Padding="causal")
        layerNormalizationLayer
        reluLayer
        dropoutLayer(dropoutFactor) 
        additionLayer(2,Name="add_"+i)];

    % Add and connect layers.
    lgraph = addLayers(lgraph,layers);
    lgraph = connectLayers(lgraph,outputName,"conv1_"+i);

    % Skip connection.
    if i == 1
        % Include convolution in first skip connection.
        layer = convolution1dLayer(1,numFilters,Name="convSkip");

        lgraph = addLayers(lgraph,layer);
        lgraph = connectLayers(lgraph,outputName,"convSkip");
        lgraph = connectLayers(lgraph,"convSkip","add_" + i + "/in2");
    else
        lgraph = connectLayers(lgraph,outputName,"add_" + i + "/in2");
    end

    % Update layer output name.
    outputName = "add_" + i;
end




tempLayers = gruLayer(NumNeurons,"Name","gru1");
lgraph = addLayers(lgraph,tempLayers);

tempLayers = [
    FlipLayer("flip3")
    gruLayer(NumNeurons,"Name","gru2")];
lgraph = addLayers(lgraph,tempLayers);


tempLayers = [
    concatenationLayer(1,2,"Name","concat")

参考资料

[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/2213729.html

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

相关文章

Java 入门基础篇11 - java基础语法

一 流程控制 1.1 流程控制语句介绍 一个java程序有很多条语句组成,流程控制语句是用来控制程序中的各语句执行的顺序,通过流程语句控制让程序执行顺序达到我们想要实现的功能。 其流程控制方式采用结构化程序设计中规定的三种基本流程结构:…

金融信用评分卡建模项目:AI辅助

最近我一直忙着开发一个信用评分卡建模工具,所以没有时间更新示例或动态。今天,我很高兴地跟大家分享,这个工具的基本框架已经完成了,并且探索性的将大语言模型(AI)整合了进去。目前ai在工具中扮演智能助手…

探索人工智能:深度解析未来科技的核心驱动力

目录 🍔 人工智能的应用方向 🍔 人工智能的发展历史 🍔 人工智能、机器学习、深度学习关系 🍔 为什么学习机器学习? 🍔 小节 学习目标 🍀 了解人工智能的应用方向 🍀 了解人工智…

CICD持续集成交付与持续交付

一 CICD是什么 CI/CD 是指持续集成(Continuous Integration)和持续部署(Continuous Deployment)或持续交付(Continuous Delivery) 1.1 持续集成(Continuous Integration) 持续集成…

javascript object

用const去define一个constant 用let (如果要reassign的话) 一个变量。

每天3分钟,彻底弄懂神经网络的优化器(十一)AdamW

1. AdamW算法的提出 AdamW算法是由Ilya Loshchilov和Frank Hutter提出的。这一算法的详细描述和原理可以在论文《Decoupled Weight Decay Regularization》1中找到,该论文发表于2017年。在论文中,作者指出了传统Adam算法在权重衰减(weight d…

初等数学几百年重大错误:将根本不是无穷集的真子集误为其真子集

黄小宁 【摘要】长为1的直线段形橡皮筋A拉长为长为2的橡皮筋B(可二等分),去掉拉力使B缩短成原来的A,A不是B的一半。同样可证直线段L均匀压缩变短为直线段D~L不能成为L的一部分。数学一直误以为D是L的一部分使康脱推出…

C/C++栈和队列

一.队列 结构定义 FIFO:队列是一个先进先出的数据结构; 只允许从队首出元素,从队尾入元素; head和tail所包含的区间是左闭开的; 入队操作 没用真实将一号元素删除,而是将head指针向后移动一位,进行逻辑上的删除; 出队操作 将新元素储存在队尾指针所在的位置,并将队尾指针…

二校区图书馆一楼《中华再造善本》很多

上两幅为同一本书的,有“太平之时嫌官小,离乱之时怕出征”这句 上两幅为同一本书的,为《水浒传》节选 二校区图书馆一楼满眼都是线装的古书《中华再造善本》 图书馆五楼 图书馆四楼,一个人躺在长沙发上 图书馆一楼的透明电梯

Intel Xeon(至强) 服务器 CPU

Purley平台:Sky Lake(第一代)、Cascade Lake(第二代) Whitley平台:Cooper Lake、Ice Lake(第三代) Eagle Stream平台:Sapphire Rapids、Emerald Rapids(第四…

Vite打包碎片化,如何化解?

背景 我们在使用Vite进行打包时,经常会遇到这个问题:随着业务的展开,版本迭代,页面越来越多,第三方依赖也越来越多,打出来的包也越来越大。如果把页面都进行动态导入,那么凡是几个页面共用的文…

RHCSA的学习(5)

一、文本内容处理命令 1、数据流和重定向 1、数据流 标准输入(standard input,简称stdin):默认情况下,标准输入指从键盘获取的输入标准输出(standard output,简称stdout)&#xff…

2020前端面试 - JavaScript2.0篇

前言: 个人觉得面试其实是一个自我学习的过程,如果说短时间内找不到工作,那一定是你面的还不够多,不要气馁,不要放弃,在心底告诉自己,下一次面试,再下一次面试,一定能够拿…

为什么inet_ntoa会返回错误的IP地址?

目录 1、调用inet_addr和inet_ntoa实现整型IP与点式字符串之间的转换 1.1、调用inet_addr将点式字符串IP转换成整型IP 1.2、调用inet_ntoa将整型IP转换成点式字符串IP 2、调用inet_ntoa返回错误点式字符串IP的原因分析 3、解决多线程调用inet_ntoa返回错误点式字符串IP的办…

在 Docker容器中安装 ROS-Melodic 并使用 rviz 进行图形化显示

文章目录 写在前面1. 背景描述2. 安装步骤2.1 允许本地机器上的用户或进程连接到 X server2.2 拉取 docker 镜像2.3 使用镜像osrf/ros:melodic-desktop-full创建并运行容器2.4 运行 roscore2.5 运行 rviz 参考链接 写在前面 自己的测试环境: Ubuntu20.04&#xff0…

基于SSM的微信小程序博客管理系统(博客1)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM的微信小程序博客管理系统实现与设计,实现了管理员与用户,管理员实现了用户管理、博文信息管理、博文类型管理、我的博文管理、个人名片分享管理、签到管理…

SAP S/4 HANA 销售返利

目录 1 简介 2 后台配置 3 主数据 4 业务操作 4.1 场景 1 - 返利应计 4.2 场景 2 - 最终结算 1 简介 在过去 SAP ECC 把“返利”功能集成在了 SD 模块当中,而 SAP S/4 HANA 把“返利”集成在了结算管理功能模块当中。究其原因,主要是 ECC “返利”…

深度解析LMS(Least Mean Squares)算法

目录 一、引言二、LMS算法简介三、LMS算法的工作原理四、LMS算法的特点五、LMS算法的应用场景六、LMS算法的局限性七、总结八、进一步探讨 一、引言 自适应滤波器是一种动态调整其参数以适应变化环境的信号处理工具,广泛应用于噪声消除、信道均衡和系统识别等领域。…

算法工程师重生之第二十五天(加油站 分发糖果 柠檬水找零 根据身高重建队列 )

参考文献 代码随想录 一、加油站 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。…

Mysql的Innodb的RR隔离级别到底有没有解决幻读问题?

InnoDB中的repeatable read这种隔离级别通过间隙锁MVCC解决了大部分的幻读问题,但是并不是所有的幻读都能解读,想要彻底解决幻读,需要使用Serializable的隔离级别。 MVCC解决幻读 在RC中,每次读取都会重新生成一个快照&#xff…