回归预测 | Matlab实现CPO-BiTCN-BiGRU冠豪猪算法优化双向时间卷积门控循环单元多变量回归预测

news2024/11/16 5:54:31

回归预测 | Matlab实现CPO-BiTCN-BiGRU冠豪猪算法优化双向时间卷积门控循环单元多变量回归预测

目录

    • 回归预测 | Matlab实现CPO-BiTCN-BiGRU冠豪猪算法优化双向时间卷积门控循环单元多变量回归预测
      • 效果一览
      • 基本介绍
      • 程序设计
      • 参考资料

效果一览

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

在这里插入图片描述

基本介绍

1.Matlab实现CPO-BiTCN-BiGRU双向时间卷积门控循环单元多变量回归预测(完整源码和数据);
2.输入多个特征,输出单个变量,回归预测,运行环境matlab2023及以上;
3.基于冠豪猪算法CPO优化的BiTCN-BiGRU模型。通过优化学习率,BiGRU的神经元个数,滤波器个数,正则化参数四个参数;命令窗口输出R2、MAE、MAPE、 RMSE多指标评价;
4.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
5.适用对象:大学生课程设计、期末大作业和毕业设计。

程序设计

  • 完整源码和数据获取方式(资源出下载):Matlab实现CPO-BiTCN-BiGRU冠豪猪算法优化双向时间卷积门控循环单元多变量回归预测。
%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行

%%  导入数据
res =xlsread('data.xlsx','sheet1','A2:H104');

%%  数据分析
num_size = 0.7;                              % 训练集占数据集比例
outdim = 1;                                  % 最后一列为输出
num_samples = size(res, 1);                  % 样本个数
res = res(randperm(num_samples), :);         % 打乱数据集(不希望打乱时,注释该行)
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);

f_ = size(P_train, 1);                  % 输入特征维度

%%  数据归一化
[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);
% 创建输入层
layer = sequenceInputLayer(f_, Normalization = "rescale-symmetric", Name = "input");
 
% 创建网络图
lgraph = layerGraph(layer);
outputName = layer.Name;
 
% 建立网络结构 -- 残差块
for i = 1 : numBlocks
    % 膨胀因子
    dilationFactor = 2^(i-1);
 
    % 创建TCN正向支路
    layers = [
        convolution1dLayer(filterSize, numFilters, DilationFactor = dilationFactor, Padding = "causal", Name="conv1_" + i)  % 一维卷积层 
        layerNormalizationLayer                                                                                             % 层归一化
        spatialDropoutLayer(dropoutFactor)                                                                                  % 空间丢弃层
        convolution1dLayer(filterSize, numFilters, DilationFactor = dilationFactor, Padding = "causal")                     % 一维卷积层  
        layerNormalizationLayer                                                                                             % 层归一化
        reluLayer                                                                                                           % 激活层
        spatialDropoutLayer(dropoutFactor)                                                                                  % 空间丢弃层
        additionLayer(4, Name = "add_" + i)
    ];
 
    % 添加残差块到网络
    lgraph = addLayers(lgraph, layers);
 
    % 连接卷积层到残差块
    lgraph = connectLayers(lgraph, outputName, "conv1_" + i);
 
    % 创建 TCN反向支路flip网络结构
%%  相关指标计算
% R2
R1 = 1 - norm(T_train - T_sim1')^2 / norm(T_train - mean(T_train))^2;
R2 = 1 - norm(T_test  - T_sim2')^2 / norm(T_test  - mean(T_test ))^2;

disp(['训练集数据的R2为:', num2str(R1)])
disp(['测试集数据的R2为:', num2str(R2)])

% 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)])

% RMSE
RMSE1 = sqrt(sum((T_sim1' - T_train).^2)./M);
RMSE2 = sqrt(sum((T_test' - T_sim2).^2)./N);

disp(['训练集数据的RMSE为:', num2str(RMSE1)])
disp(['测试集数据的RMSE为:', num2str(RMSE2)])

%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)])    

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/129215161
[2] https://blog.csdn.net/kjm13182345320/article/details/128105718

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

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

相关文章

kubesphere jenkins 流水线 未运行(解决方案)

场景: 在kubesphere 中运行 流水线 devops 结果,显示未运行 但是用 admin 账户是可以运行成功的。 问题解决 1- 查日志: 然后 Caused: org.acegisecurity.userdetails.UsernameNotFoundException: org.springframework.security.core.…

yolov5v7v8目标检测增加计数功能--免费源码

在yolo系列中,很多网友都反馈过想要在目标检测的图片上,显示计数功能。其实官方已经实现了这个功能,只不过没有把相关的参数写到图片上。所以微智启软件工作室出一篇教程,教大家如何把计数的参数打印到图片上。 一、yolov5目标检测…

拥有美国洛杉矶RAKsmart云服务器:探索无限可能

随着信息技术的飞速发展,云服务器已成为企业和个人用户不可或缺的重要工具。美国洛杉矶的RAKsmart云服务器,凭借其卓越的性能、稳定的网络环境和高级的安全性,为用户提供了无尽的便利和可能性。那么,拥有这样一台云服务器&#xf…

倔强的人适合什么职业?

倔强的人总是有一股咬牙坚持的意志力,他们不管面对怎样的困境,哪怕称得上是绝境的处境,依然愿意一往直前,这种不服输和不妥协的精神感染了很多人。 倔强的人可以坚持自己的想法,不会因为外界因素和某些人的看法而有所…

VR全景HDR拍摄教程

什么是HDR? HDR可以用在哪里? 书面解释:HDR(高动态范围 High Dynamic Range)摄影,是摄影领域广泛使用的一种技术。 是不是有点懵? 我们来看一个实际的拍摄现场环境,你就懂了 我们…

文物预防性保护系统方案的需求分析

没有文物保存环境监测,就不能实施有效的文物预防性保护。因此要建立文物预防性保护体系,一定要先有良好的文物状态监测制度,进而进行科学有效的文物保护管理。所以,导入文物预防性保护监测与调控系统,首先就是要针对文物进行全年温度、湿度、光照等关键参…

HW高水位问题及解决办法

一、问题描述及分析 应用业务反馈应用响应缓慢。登录数据库检查,发现数据库响应慢,有大量enq:HW–contention等待事件。结合awr报告和ash报告,发现整体等待时间消耗在推高水位线征用上,如下awr top事件:Ash消耗也是en…

循环结构的基本概念是什么?

一、问题 在实际问题中,经常会⽤到循环结构,如求100以内的n的阶乘、杨辉三⻆等,那什么是循环结构呢? 二、解答 循环结构也就是反复执⾏⼀段指令,直到满⾜某个条件为⽌。例如,要计算⼀个公司的所有消费总额…

HTTP详解(HTTP的特点,状态码,工作原理,GET和POST的区别,如何解决无状态通信)!!!

文章目录 一、HTTP协议简介二、HTTP的主要特点三、HTTP之URL四、Request和Respons五、HTTP的状态码六、HTTP工作原理七、GET和POST请求的区别八、解决HTTP无状态通信——Cookie和Session 一、HTTP协议简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议&…

简单网站模板1(HTML)

想要拥有自己的网站&#xff0c;却不知该如何才能简约好看&#xff0c;接下来分享一种自己搭建的网站模板&#xff0c;希望大家喜欢。 展示图&#xff1a; CODE: <!DOCTYPE html> <html> <head><title>我的网站</title><style>body {fo…

《TCP/IP详解 卷一》第10章 UDP和IP分片

目录 10.1 引言 10.2 UDP 头部 10.3 UDP校验和 10.4 例子 10.5 UDP 和 IPv6 10.6 UDP-Lite 10.7 IP分片 10.7.1 例子&#xff1a;IPV4 UDP分片 10.7.2 重组超时 10.8 采用UDP的路径MTU发现 10.9 IP分片和ARP/ND之间的交互 10.10 最大UDP数据报长度 10.11 UDP服务器…

【Linux】实时查看服务器信息

查看服务器CPU使用率 使用命令mpstat 1。这里的1表示每隔1秒更新一次CPU使用率。如果系统未安装mpstat&#xff0c;可以通过安装sysstat包来获取它。 在基于Debian的系统&#xff08;如Ubuntu&#xff09;上&#xff0c;使用命令&#xff1a; sudo apt-get update sudo apt-…

微服务之qiankun主项目+子项目搭建

主项目使用history&#xff0c;子项目使用hash模式 1. 下载安装"qiankun": "^2.10.13"2. 手动调用qiankun,使用vue脚手架搭建的项目1. 主项目配置&#xff08;我使用的是手动调用乾坤&#xff0c;在指定页面显示内容&#xff09;1. 要使用的页面中引入乾坤…

LeetCode 2125.银行中的激光束数量

银行内部的防盗安全装置已经激活。给你一个下标从 0 开始的二进制字符串数组 bank &#xff0c;表示银行的平面图&#xff0c;这是一个大小为 m x n 的二维矩阵。 bank[i] 表示第 i 行的设备分布&#xff0c;由若干 ‘0’ 和若干 ‘1’ 组成。‘0’ 表示单元格是空的&#xff0…

WebServer -- 日志系统(下)

目录 &#x1f33c;整体思路 &#x1f382;基础API fputs 可变参数宏 __VA_ARGS__ fflush &#x1f6a9;流程图与日志类定义 流程图 日志类定义 &#x1f33c;功能实现 生成日志文件 && 判断写入方式 日志分级与分文件 &#x1f33c;整体思路 日志系统分两部…

Vue+Flask电商后台管理系统

在这个项目中&#xff0c;我们将结合Vue.js前端框架和python后端框架Flask&#xff0c;打造一个功能强大、易于使用的电商后台管理系统 项目演示视频&#xff1a; VueFlask项目 目录 前端环境&#xff08;Vue.js&#xff09;&#xff1a; 后端环境&#xff08;python-Flask&…

面试数据库篇(mysql)- 07索引创建原则与失效及优化

索引创建原则 1). 针对于数据量较大,且查询比较频繁的表建立索引。 2). 针对于常作为查询条件(where)、排序(order by)、分组(group by)操作的字段建立索引。 3). 尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高。 4). 如果是字符…

OpenCV实现目标追踪

目录 准备工作 语言&#xff1a; 软件包&#xff1a; 效果演示 代码解读 &#xff08;1&#xff09;导入OpenCV库 &#xff08;2&#xff09;使用 cv2.VideoCapture 打开指定路径的视频文件 &#xff08;3&#xff09;使用 vid.read() 读取视频的第一帧&#xff0c;ret…

ts的重载

官网示例 TypeScript: Documentation - Template Literal Types 这里大概理解是 T 继承了Number|sting 加上&#xff1f;条件判断就是 T继承Number|sting 部分为true 没有继承部分为false&#xff0c; 就是输入string, 为true, 输入 null 则为false, type Exclude<T, U&…

如何访问内网服务器?

访问内网服务器是在网络架构中常见的需求。内网服务器是指在一个局域网中运行的服务器&#xff0c;可以提供各种服务&#xff0c;如文件共享、网站托管等。由于安全性的考虑&#xff0c;内网服务器一般不直接暴露在公网中&#xff0c;所以需要通过特定的方法来访问。 一种常见的…