回归预测 | MATLAB实现NGO-BiLSTM北方苍鹰算法优化双向长短期记忆网络多输入单输出回归预测

news2024/11/17 0:02:39

回归预测 | MATLAB实现NGO-BiLSTM北方苍鹰算法优化双向长短期记忆网络多输入单输出回归预测

目录

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

预测效果

1
2
3
4
5
6
7
8

基本介绍

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

程序设计

  • 完整程序和数据下载方式1(资源处直接下载):MATLAB实现NGO-BiLSTM北方苍鹰算法优化双向长短期记忆网络多输入单输出回归预测
  • 完整程序和数据下载方式2(订阅《智能学习》专栏,同时获取《智能学习》专栏收录程序6份,数据订阅后私信我获取):MATLAB实现NGO-BiLSTM北方苍鹰算法优化双向长短期记忆网络多输入单输出回归预测
%% ------------------利用优化参数重新训练BiLSTM并预测----------------------------
% 数据输入x的特征维度
inputSize  = size(inputn_train,1);
% 数据输出y的维度
outputSize = size(outputn_train,1);

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

% trainoption(lstm)
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, ...

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

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

%网络测试输出
BiLSTMoutputr_test= [];
for i = 1:Nu_test
    [BiLSTMnet,BiLSTMoutputr_test(:,i)] = predictAndUpdateState(BiLSTMnet,inputn_test(:,i),'ExecutionEnvironment','cpu');
end
%% -----------------预测结果-------------------------
%  数据格式转换
BiLSTM_train =BiLSTMoutput_train';
BiLSTM_test = BiLSTMoutput_test';

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

参考资料

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

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

相关文章

Mybatis源码(3) - Executor执行过程 | 一级缓存 | 二级缓存

0. 前言:1. CachingExecutor#query:1.1. BoundSql:1.2. CacheKey:1.3. 二级缓存:1.4. 一级缓存:2. JDBC过程执行:3. 结果集处理:4. Mybatis的一级缓存、二级缓存区别:0. …

PHP(14)会话技术

PHP(14)会话技术一、概念二、分类三、cookie技术1. cookie的基本使用2. cookie的生命周期3. cookie的作用范围4. cookie的跨子域5. cookie的数组数据四、session1. session原理2. session基本使用3. session配置4. 销毁session一、概念 HTTP协议是一种无…

注解(加与不加的区别)

起因: 在看到这个文章时,对于注解的作用半知半解,由此,写了个例子,验证注解作用 以Override举例 新建一个父类,取名为textone(类名首字母应该大写) 写一个方法: 再新建一个类,继承…

Java学的好,工作不愁找

俗话说的好:“Java学的好,工作不愁找”,不管我们学习哪一门语言,我们都要掌握从抽象化中提取出来的方法,这样你才能提高我们的学习能力,并且在学习新事物的时候可以提取我们自己的想法。学习java&#xff0…

使用营销自动化的 7 大主要优势

对于大多数企业家来说,自动化已成为在数字时代简化业务的必要条件。那么,您可以采取哪些步骤来实施营销自动化呢? 1. 社交媒体整合 拥有吸引人的社交媒体形象是成功的先决条件。您不可能完成所有社交媒体营销任务,使用自动化软件&…

git idea创建新分支,获取/合并主支代码的2个方法

其他sql格式也在更新中,可直接查看这个系列,要是没有你需要的格式,可在评论或私信我 个人目录 获取主支代码的2个方法1,创建一个分支,获取主支的所有代码(场景:我需要一个自己的分支进行编写模…

【MyBatis】源码学习 02 - Java 元注解以及 MyBatis @Param 注解分析

文章目录前言参考目录学习笔记1、Java 注解1.1、Java 元注解1.2、Java ElementType 枚举值1.3、自定义注解2、Param 注解分析2.1、Param 注解2.2、测试方法2.3、流程分析(重点:ParamNameResolver)前言 本文内容对应的是书本第 7 章的内容&am…

Java文件操作和I/O

Java 流(Stream)、文件(File)和IOJava.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。一个流可以理解为一个数据的序列。输入流表示从一个源…

Python 自己简单地造一个轮子.whl文件

造轮子引言准备文件原始文件打包轮子文件运行验证引言 平时使用的python第三方库很顺手,这第三方库一般都是大家一起努力的结果,那我们是不是也可以贡献一点力量呢?首先从造一个本地的.whl文件开始。 在python中,引用第三方库时…

AI算法创新赛-人车目标检测竞赛总结02

源码目录--AI0000026/ --models/ #存放原始模型文件 --scripts/ #存放模型编译、量化所用到的命令脚本,标签格式转换的脚本。 --data/ #存放B榜数据集102张图片 --bmodel/ #存放编译或量化生成的xxx.bmodel --test/ #存放执行推理的代码,会调用bmodel/中…

CAD二次开发 添加按钮Ribbon

这篇文章是教大家怎样子创建自己的Ribbon按钮界面(如下图),以下示例代码在CAD2020中运行实现。 背景 创建一个属于自己的Ribbon按钮(如下图) 理解Ribbon、Panel、Tab的关系(如下图)&#xff…

输入任意多个整数, 把这些数据保存到文件data.txt中.(按ctrl + z)

#pragma once #include <iostream> #include <fstream> using namespace std; /* 输入任意多个整数, 把这些数据保存到文件data.txt中. 如果在输入的过程中, 输入错误, 则提示用户重新输入. 指导用户输入结束(按ctrl z) [每行最多保存10个整数] */ int main() { …

Kafka的日志同步

首先介绍下LEO和HW LEO&#xff1a; 即LogEndOffset&#xff0c;表示该副本下次日志记录的偏移量HW&#xff1a;即HighWatermark&#xff0c;高水位线&#xff0c;是所有ISR副本集合中的LEO最小值上图中&#xff0c;如果此时三个副本都在ISR集合中&#xff0c;那么此时他们的LE…

三次握手和四次挥手

文章目录TCP三次握手为什么要三次握手三次握手可以携带数据吗&#xff1f;三次握手失败&#xff0c;服务端会如何处理?ISN代表什么&#xff0c;意义&#xff0c;何要动态随机什么是半连接队列第2次握手传回了ACK&#xff0c;为什么还要传回SYN&#xff1f;为什么要四次挥手TCP…

DeepSort:论文翻译

文章目录摘要1、简介2、利用深度关联度量进行排序2.1、轨迹处理和状态估计2.3、匹配的级联2.4、深度外观描述符3、实验4、结论论文链接&#xff1a;https://arxiv.org/pdf/1703.07402.pdf摘要 简单在线实时跟踪(SORT)是一种实用的多目标跟踪方法&#xff0c;专注于简单、有效的…

PFU扫描仪将于2023年4月切换至理光品牌上

目前&#xff0c;株式会社PFU (以下简称“PFU”)在村上清治社长的带领下&#xff0c;正将其在全球拥有庞大市场份额的图像扫描仪从富士通品牌变更为理光品牌&#xff0c;涉及产品线包括fi系列、SP系列和ScanSnap系列。2022年9月1日完成公司股权转让后&#xff0c;PFU正式加入理…

【STM32笔记】低功耗模式下GPIO省电配置避坑实验(闲置引脚配置为模拟输入其实更耗电)

【STM32笔记】低功耗模式下GPIO省电配置避坑实验&#xff08;闲置引脚配置为模拟输入其实更耗电&#xff09; 前文&#xff1a; blog.csdn.net/weixin_53403301/article/details/128216064 【STM32笔记】HAL库低功耗模式配置&#xff08;ADC唤醒无法使用、低功耗模式无法烧录解…

ReportBuilder Enterprise Edition 22.0 Crack

Report Builder 的主要目的是为用户和开发人员提供全面的覆盖范围以及现有的替代方案。这个目标被认为是通过提供视觉、无障碍的答案来实现的&#xff0c;它是所有可用的四个区域。Report Builder 和报表设计器的屏幕截图能够表明它具有的用户界面符合人体工程学的布局。与 Rep…

WebDAV之π-Disk派盘+Piktures

Piktures支持WebDAV方式连接π-Disk派盘。推荐一款简单易用&#xff0c;功能超级强大的智能相册应用。Piktures智能相册是一款简单易用&#xff0c;功能超级强大的智能相册应用&#xff0c;它不仅可以访问本地和云照片&#xff0c;还可以照片编辑器&#xff0c;而且它同时还是一…

Mysql常用函数大全

本篇文章讲解是是MySQL的函数方法&#xff0c;涵盖所有的MySQL常见的方法。下面是本篇文章的目录结构&#xff0c;可以根据自己需求点击右方目录查找&#xff1a; 目录 &#xff08;一&#xff09;数字函数 &#xff08;二&#xff09;字符串函数 &#xff08;三&#xff0…