时序预测 | MATLAB实现NGO-BiLSTM北方苍鹰算法优化双向长短期记忆网络时间序列预测

news2024/11/24 16:33:20

时序预测 | MATLAB实现NGO-BiLSTM北方苍鹰算法优化双向长短期记忆网络时间序列预测

目录

    • 时序预测 | MATLAB实现NGO-BiLSTM北方苍鹰算法优化双向长短期记忆网络时间序列预测
      • 预测效果
      • 基本介绍
      • 程序设计
      • 参考资料

预测效果

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

在这里插入图片描述

基本介绍

时序预测 | MATLAB实现NGO-BiLSTM北方苍鹰算法优化双向长短期记忆网络时间序列预测(完整源码和数据)
1.data为数据集,单变量时间序列。
2.MainNGOBiLSTMTS.m为程序主文件,其他为函数文件无需运行。
3.命令窗口输出MAE、MSE、RMSEP、RPD和MAPE,可在下载区获取数据和程序内容。
4.北方苍鹰算法优化参数为学习率,隐藏层节点个数,正则化参数。
注意程序和数据放在一个文件夹,运行环境为Matlab2018及以上.

程序设计

  • 完整程序和数据下载方式(资源处直接下载):MATLAB实现NGO-BiLSTM北方苍鹰算法优化双向长短期记忆网络时间序列预测
%% -------------优化----------------------
% 参数设置
SearchAgents = 5;  % 种群数量 
Max_iterations =10; % 迭代次数  

lowerbound = [1e-10 0.0001 10 ];%三个参数的下限
upperbound = [1e-2 0.002 400 ];%三个参数的上限
dim = 3;%数量,即要优化的超参数个数
 
fobj = @(x)fun(x,inputn_train,outputn_train,outputps);   %调用函数fun计算适应度函数值
%% 赋值; 
[Best_score,Best_pos,Convergence_curve]=NGO(SearchAgents,Max_iterations,lowerbound,upperbound,dim,fobj)    %% 北方苍鹰算法

%得到最优参数
L2Regularization = Best_pos(1,1); % 最佳L2正则化系数
InitialLearnRate = Best_pos(1,2); % 最佳初始学习率
NumOfUnits  =abs(round( Best_pos(1,3)));   % 最佳隐藏层节点数

%% ------------------利用优化参数重新训练LSTM并预测----------------------------
% 数据输入x的特征维度
inputSize  = size(inputn_train,1);
% 数据输出y的维度
outputSize = size(outputn_train,1);

%  设置网络结构
layers = [ ...
    sequenceInputLayer(inputSize)     %输入层,参数是输入特征维数
    
    dropoutLayer(0.2)                  %权重丢失率
    fullyConnectedLayer(outputSize)   %全连接层,也就是输出的维数
    regressionLayer];    %回归层,该参数说明是在进行回归问题,而不是分类问题

opts = trainingOptions('adam', ...      %优化算法
    'MaxEpochs',100, ...                %最大迭代次数
    'GradientThreshold',1,...           %梯度阈值,防止梯度爆炸
    'ExecutionEnvironment','cpu',...   %对于大型数据集合、长序列或大型网络,在 GPU 上进行预测计算通常比在 CPU 上快。其他情况下,在 CPU 上进行预测计算通常更快。
    'InitialLearnRate',InitialLearnRate, ...
    'LearnRateSchedule','piecewise', ...
    'LearnRateDropPeriod',120, ...
    'LearnRateDropFactor',0.2, ...   % 指定初始学习率 0.005,在 100 轮训练后通过乘以因子 0.2 来降低学习率。
    'L2Regularization', L2Regularization, ...       % 正则化参数
    'Verbose',false, ...         %如果将其设置为true,则有关训练进度的信息将被打印到命令窗口中。
    'Plots','training-progress'...   %构建曲线图,   若将'training-progress'替换为'none',则不画出曲线
    );   % 'MiniBatchSize',outputSize*30, ...

%  训练
LSTMnet = trainNetwork(inputn_train ,outputn_train ,layers,opts);    %  网络训练

%  预测
[LSTMnet,LSTMoutputr_train]= predictAndUpdateState(LSTMnet,inputn_train);   % 训练样本拟合值
LSTMoutput_train = mapminmax('reverse',LSTMoutputr_train,outputps);  % 数据反归一化

%网络测试输出
LSTMoutputr_test= [];
end
LSTMoutput_test= mapminmax('reverse',LSTMoutputr_test,outputps);   %反归一化
toc

%% -----------------预测结果-------------------------
%  数据格式转换
LSTM_train =LSTMoutput_train';
LSTM_test = LSTMoutput_test';

train_DATA=output_train';    %训练样本标签
test_DATA= output_test'; %测试样本标签

%%  绘图
%%  均方根误差 RMSE
error1 = sqrt(sum((LSTM_train - train_DATA).^2)./M);
error2 = sqrt(sum((LSTM_test- test_DATA).^2)./N);
%%
%决定系数
R1 = 1 - norm(train_DATA - LSTM_train)^2 / norm(train_DATA - mean(train_DATA))^2;
R2 = 1 - norm(test_DATA -  LSTM_test)^2 / norm(test_DATA -  mean(test_DATA ))^2;

%%
%均方误差 MSE
mse1 = sum((LSTM_train - train_DATA).^2)./M;
mse2 = sum((LSTM_test - test_DATA).^2)./N;
%%
%RPD 剩余预测残差
SE1=std(LSTM_train-train_DATA);
RPD1=std(train_DATA)/SE1;

SE=std(LSTM_test-test_DATA);
RPD2=std(test_DATA)/SE;
%% 平均绝对误差MAE
MAE1 = mean(abs(train_DATA - LSTM_train));
MAE2 = mean(abs(test_DATA - LSTM_test));
%% 平均绝对百分比误差MAPE
MAPE1 = mean(abs((train_DATA - LSTM_train)./train_DATA));
MAPE2 = mean(abs((test_DATA - LSTM_test)./test_DATA));

参考资料

[1] https://blog.csdn.net/article/details/126072792?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/article/details/126044265?spm=1001.2014.3001.5502

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

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

相关文章

面对突如其来的 GC 问题如何下手解决

今天我们主要从一个实战案例入手分析面对突如其来的 GC 问题该如何下手解决。 想要下手解决 GC 问题,我们首先需要掌握下面这三种问题。 如何使用 jstat 命令查看 JVM 的 GC 情况? 面对海量 GC 日志参数,如何快速抓住问题根源? …

保密技术基础--北交大实验靶场2

由于第2、第3章的内部章节较少,所以我将其的体验感受一起写在这篇文章当中。 2.1 保密专用网络知识学习 这一小节也是一节的理论知识学习,学习过后有一个小测试,和第一章一样,学的知识和给的题目可以说是毫无关系。这一节的知识更…

VBA技术资料1-182

MF系列VBA技术资料 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧,我参考大量的资料,并结合自己的经验总结了这份MF系列VBA技术综合资料,而且开放源码(MF04除外),其中MF01-04属于定…

04_kibana 安装和配置指南

04_kibana 安装和配置指南 概述安装配置可能报错环境变量配置 概述 这个是干啥的呢? 目前我理解就是数据的展示 我们安装的目的是 请求访问ES, 如果没有安装完全可以使用postman代替 不过这个调试的时候有提示比较好, 所以我就安装了 安装…

【射频电路基础】第二章-谐振功率放大器

本书所用版本为:《射频电路基础》第二版(赵建勋 邓军 著) 网课详情见b站:《射频电路基础(高频电子线路)》 本书的笔记以书本和手写笔记结合为主。 文章目录 第二章 谐振功率放大器1. 谐振功率放大器的工作原理2. 谐振功率放大器…

Android kotlin开源项目-功能标题目录

目录 一、BRVAH二、开源项目1、RV列表动效(标题目录)2、拖拽与侧滑(标题目录)3、数据库(标题目录)4、树形图(多级菜单)(标题目录)5、轮播图与头条(标题目录)6…

蓝桥杯 题库 简单 每日十题 day2

01 卡片 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。 小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个&a…

红黑树(思维导图详解版)

目录 资源已上传 实现代码 测试代码 资源已上传 部分图片 实现代码 注意判断是否为红黑树的代码实现&#xff0c;实现代码中红黑树的删除 #pragma once #include<iostream> using namespace std;enum Color_Type {Red,Black };template<class K,class V> str…

【计算机视觉】Vision Transformers算法介绍合集(一)

文章目录 一、Vision Transformer二、Swin Transformer三、Detection Transformer四、Data-efficient Image Transformer五、self-DIstillation with NO labels六、Deformable DETR七、Compact Convolutional Transformers八、NesT九、Pyramid Vision Transformer十、Dense Pre…

什么是MQ消息队列及四大主流MQ的优缺点(个人网站复习搬运)

什么是&#xff2d;&#xff31;消息队列及四大主流&#xff2d;&#xff31;的优缺点 小程序要上一个限时活动模块&#xff0c;需要有延时队列&#xff0c;从网上了解到用RabbitMQ可以解决&#xff0c;就了解了下 MQ 并以此做记录。 一、为什么要用 MQ 核心就是解耦、异步和…

算法笔记—多数相加

首先&#xff0c;我们要引入一个一道题目1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; 两数之和 其实这道题很简单&#xff0c;但是&#xff0c;可以使用内嵌循环来进行遍历&#xff0c;找到符合要求的数据&#xff0c;返回下标即可。 但今天提供另一个方法&#xff…

劳务管理 视频监控 项目版智慧工地管理系统源码

智慧工地管理系统将人工智能技术、传感器技术、虚拟现实技术等更多高新技术嵌入到建筑、机器、人员佩戴的设备、工地出入口大门等各种物体中&#xff0c;广泛互联形成“物联网技术”&#xff0c;再与“互联网技术”融合&#xff0c;完成项目管理利益相关者与项目施工现场的融合…

数据仓库模型设计V2.0

一、数仓建模的意义 数据模型就是数据组织和存储方法&#xff0c;它强调从业务、数据存取和使用角度合理存储数据。只有将数据有序的组织和存储起来之后&#xff0c;数据才能得到高性能、低成本、高效率、高质量的使用。 高性能&#xff1a;良好的数据模型能够帮助我们快速查询…

考研算法47天:01背包

问题描述 算法详细步骤 代码随想录 (programmercarl.com) ac代码 #include <iostream> using namespace std; int bag[1001]; int bagMax[1001]; int bagvalue[1001]; int main(){int n,v;cin>>n>>v;for(int i0;i<n;i){cin>>bag[i]>>bagva…

跨站脚本攻击实验-beef

实验目的 学习XSS工具/手工攻击的原理掌握XSS工具/手工攻击的方法学习防御XSS的方法/原理 实验工具 burpsuite Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工具&#xff0c;并为这些工具设计了许多接口。所有的工具都共享一个能处理并显示HTTP 消息&#xff…

电路电子技术2电容电感伏安关系 计算电路中某两端电压

1.计算电流 思路&#xff1a;可以知道R1两端的电压&#xff0c;即U1&#xff0c;计算出流过R1的电流。接下来计算R2两端的电压&#xff0c;即US-U1&#xff0c;进而知道流过R2的电流。根据在节点处的KCL&#xff0c;即可求出I。 2.电容电感伏安关系 电容元件与电感元件的伏安…

购买问界M7大五座(自动驾驶走进我们的生活一)

龙龙在两天前下了问界M7大五座的大定&#xff08;5000元&#xff09;&#xff0c;今天周末陪幺姨、姨爹、龙龙在重庆汽博问界4S店谈完了M7大五座的订购事宜。 早上10点到店后&#xff0c;姨爹在问界M5上完成了他的第一次自动驾驶试驾。小唐先开了一段路示范自驾&#xff0c;在回…

机器学习(16)---聚类(KMeans)

聚类 一、聚类概述1.1 无监督学习与聚类算法1.2 sklearn中的聚类算法 二、 KMeans2.1 基本原理2.2 簇内误差平方和 三、sklearn中的KMeans3.1 所用模块3.2 聚类算法的模型评估指标3.3 轮廓系数3.4 CHI(卡林斯基-哈拉巴斯指数) 四、KMeans做矢量量化4.1 概述4.2 案例 一、聚类概…

第二节:利用VBA代码交换三个单元格的值

【分享成果&#xff0c;随喜正能量】经常在做一件事时&#xff0c;一开始动力很足&#xff0c;可时间久了&#xff0c;就会出现意志力消耗殆尽。流水不腐&#xff0c;户枢不蠹。做一件对自己好的小事&#xff0c;养一个好习惯&#xff0c;慢慢坚持&#xff0c;持续去做&#xf…

[abc复盘] abc319 20230909

[abc复盘] abc319 20230909 总结A - Legendary Players1. 题目描述2. 思路分析3. 代码实现 B - Measure1. 题目描述2. 思路分析3. 代码实现 C - False Hope1. 题目描述2. 思路分析3. 代码实现 D - Minimum Width1. 题目描述2. 思路分析3. 代码实现 E - Bus Stops1. 题目描述2.…