时序预测 | Transformer时间序列预测 Matlab代码

文章目录

      • 效果一览
      • 文章概述
      • 源码设计
      • 参考资料


效果一览

在这里插入图片描述

文章概述

1.时序预测 | Transformer时间序列预测 Matlab代码
2.单变量时间序列预测;
3.多指标评价,评价指标包括:R2、MAE、MBE等,代码质量极高;
4.excel数据,方便替换,运行环境2020及以上。
长期以来,时间序列预测一直使用统计方法(例如,自回归综合移动平均(ARIMA,指数平滑和结构模型)。一般来说,统计方法中使用的参数模型需要大量的领域专业知识来构建。为了减轻这种负担,许多机器学习技术,如梯度推进回归树(gradient boosting Retression tree,GBRT)得到了应用,它以数据驱动的方式学习时间序列的时间动态。然而,这些方法仍然需要手动特征工程和模型设计。深度神经网络(DNN)可以子鄂东从大量数据中获得的强大表示学习能力,出现了各种基于深度学习的TSF解决方案,在许多情况下取得了比传统技术更好的预测精度。
基于递归神经网络(RNN)的方法和基于卷积神经网络(CNN)的方法也被应用到TSF任务上。基于RNN的TSF方法属于迭代多步(IMS)预测。根据解码器是否以自回归方式实现,基于CNN的TSF方法即存在迭代多步(IMS)预测技术,也存在直接多步骤(DMS)预测技术。
Transformer可以说是最成功的序列建模架构,它在各种人工智能应用中表现出无与伦比的性能,如自然语言处理、语音识别和运动分析。最近,出现了很多基于Transformer的时间序列分析的工作。其中TSF任务的一些优秀的工作包括:LogTrans(NeurIPS 2019),Informer(AAAI 2021最佳论文),Autoformer(NeurIPS 2021),Pyraformer(ICLR 2022 ORAL),以及最近的FEDformer(ICML 2022)。

源码设计

%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% CSDN博主机器学习之心
%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行%%  数据集分析
outdim = 1;                                  % 最后一列为输出% 输入特征维度%%  划分训练集和测试集
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);%----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------%%  数据反归一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);%%  均方根误差
error1 = sqrt(sum((T_sim1 - T_train).^2) ./ M);
error2 = sqrt(sum((T_sim2 - T_test ).^2) ./ N);%save BP T_train T_test T_sim1 T_sim2
%%  相关指标计算
%  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)])%% 平均绝对百分比误差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)])%  MBE
mbe1 = sum(T_sim1 - T_train) ./ M ;
mbe2 = sum(T_sim2 - T_test ) ./ N ;disp(['训练集数据的MBE为:', num2str(mbe1)])
disp(['测试集数据的MBE为:', num2str(mbe2)])%均方误差 MSE
mse1 = sum((T_sim1 - T_train).^2)./M;
mse2 = sum((T_sim2 - T_test).^2)./N;disp(['训练集数据的MSE为:', num2str(mse1)])
disp(['测试集数据的MSE为:', num2str(mse2)])%%  绘图
figure
plot(1: M, T_train, '-', 1: M, T_sim1, '-', 'LineWidth', 1)
legend('真实值', '预测值')
xlabel('预测样本')
ylabel('预测结果')
string = {'训练集预测结果对比'; ['RMSE=' num2str(error1)]};
title(string)
xlim([1, M])figure
plot(1: N, T_test, '-', 1: N, T_sim2, '-', 'LineWidth', 1)
legend('真实值', '预测值')
xlabel('预测样本')
ylabel('预测结果')
string = {'测试集预测结果对比'; ['RMSE=' num2str(error2)]};
title(string)
xlim([1, N])%% 绘制线性拟合图
%% 训练集拟合效果图
figure
plot(T_train,T_sim1,'o','Markersize',7);
xlabel('真实值')
ylabel('预测值')
string = {'训练集效果图';['R^2_c=' num2str(R1)  '  RMSEC=' num2str(error1) ]};
title(string)
hold on ;h=lsline;
set(h,'LineWidth',2,'LineStyle','-','Color',[1 0 0])
%% 预测集拟合效果图
figure
plot(T_test,T_sim2,'o','Markersize',7);
xlabel('真实值')
ylabel('预测值')
string1 = {'测试集效果图';['R^2_p=' num2str(R2)  '  RMSEP=' num2str(error2) ]};
title(string1)
hold on ;h=lsline();

参考资料

[1] Eric A. Wan, Rudolph van der Merwe. The Unscented Kalman Filter for Nonlinear Estimation. Oregon Graduate Institute of Science & Technology, Feb 2000
[2] carbon_emission_prediction_and_forecast

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Qt 学习笔记】Qt常用控件 | 显示类控件Progress Bar的使用及说明

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 显示类控件Progress Bar的使用及说明 文章编号&#xff…

ollama大语言模型

查看已经安装的大语言模型 ollama list运行大语言模型 ollama run llama2:latest

【计算机毕业设计】微信小程序:MHK自学平台的设计与实现——后附源码

🎉**欢迎来到我的技术世界!**🎉 📘 博主小档案: 一名来自世界500强的资深程序媛,毕业于国内知名985高校。 🔧 技术专长: 在深度学习任务中展现出卓越的能力,包括但不限于…

数据结构(顺序栈

目录 1. 讲解:2. C代码实现:小结: 1. 讲解: 用顺序的物理结构(数组)存储栈这个数据结构,实现栈的创建、销毁、增删查、判空。 top指针的指向位置有两种实现方法:一个是指向栈顶元素…

力扣(leetcode) 42. 接雨水 (带你逐步思考)

力扣(leetcode) 42. 接雨水 (带你逐步思考) 链接:https://leetcode.cn/problems/trapping-rain-water/ 难度:hard 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多…

二刷大数据(三)- Flink1.17

目录 Flink概念与SparkStreaming区别分层API 工作流程部署模式**Local Mode****Standalone Mode****YARN Mode****Kubernetes Mode****Application Mode** 运行架构stand alone 核心概念算子链任务槽 窗口窗口**窗口的目的与作用****时间窗口(Time Windows&#xff…

jenkins 部署 vue 项目

jenkins 部署 vue 项目 环境 系统:CentOS7.9 Jenkins:最新LTS版本 nginx: 1.24.x gitLab: 打包机:jenkins所在服务器 目标机器:nginx所在服务器 jenkins部署配置 关键脚本 #node -v #已经安装node_module就无需执行install安…

配置静态路由实现全网互通

1、实验环境 如图下所示,三台路由器R1.R2,R3两两互连,每台路由器上都配置了Loopback地址模拟网络环境。 2、需求描述 需要在三台路由器上配置静态路由,以实现各网段之间的互通。 若要实现全网互通,必须明确如下两个问…

Centos7.9 脚本一键部署nextcloud,配置Nginx代理Https。

目录 一键安装nextcloud 出现错误TypeError Cannot read properties of undefined (reading ‘writeText‘) 生成自签名SSL证书 编辑Nginx配置文件 启动Nginx 一键安装nextcloud 本脚本参考文章,本文较长建议先看完在操作!!!…

Vue之v-on事件修饰符的含义及使用

背景:Vue 拆封了一个组件,在组件里面会使用一个方法来改变父组件传过来的值, 但是在子组件里面操作父组件的数据变更,实在比较麻烦(因为单向数据流), So 能不能直接在组件上面绑定事件方法呢&…

HiveSql中的函数家族(二)

一、窗口函数 1、什么是窗口函数 在 SQL 中,窗口函数(Window Functions)是一种特殊的函数,它允许在查询结果集的特定窗口(通常是一组行)上执行聚合、分析和计算操作,而无需聚合整个结果集。窗口…

HTML重要标签梳理学习

1、HTML文件的框架 使用VS Code编码时&#xff0c;输入!选中第一个&#xff01;就可以快速生成一个HTML文件框架。 2、标签 <hr> <!--下划线--> <br> <!--换行--> <strong>加粗</strong> &…