当前位置: 首页 > article >正文

Transformer时间序列预测实战:如何用个人业务数据替换ETTh1进行滚动预测与结果分析

Transformer时间序列预测实战从公开数据集到业务数据的无缝迁移指南当你第一次接触Transformer时间序列预测时可能已经跑通了ETTh1这类公开数据集的Demo。但真正令人头疼的是如何将这套方法迁移到自己的业务数据上本文将带你跨越这道鸿沟从数据格式转换到滚动预测配置手把手实现业务数据的预测落地。1. 业务数据与公开数据集的格式差异解析公开数据集如ETTh1通常已经过标准化处理而业务数据往往存在各种脏数据特征。我们先看一个典型业务CSV与ETTh1的结构对比特征ETTh1数据集业务数据常见问题时间列标准datetime格式可能缺失或格式不统一目标列明确标记为OT需要人工指定目标变量缺失值已处理存在间断或异常值频率明确每小时(h)可能不均匀采样多变量7个相关特征特征相关性未知关键转换步骤# 业务数据预处理示例 import pandas as pd # 读取原始业务数据 raw_data pd.read_csv(sales_data.csv) # 时间列标准化 raw_data[date] pd.to_datetime(raw_data[timestamp]).dt.floor(h) # 按小时对齐 # 处理缺失值 data raw_data.set_index(date).interpolate().reset_index() # 重命名目标列假设销售额是预测目标 data.rename(columns{total_sales: OT}, inplaceTrue) # 保存为模型可读格式 data.to_csv(processed_business_data.csv, indexFalse)注意业务数据的features参数通常选择MS多变量预测单变量因为实际场景中我们往往需要利用所有可用特征来预测核心指标。2. 模型参数的业务化改造策略原始代码中的参数配置需要针对业务数据做针对性调整。以下是关键参数的业务适配指南2.1 时间相关参数parser.add_argument(--freq, typestr, defaulth, help业务数据常见选项: h(小时), d(天), b(工作日)) parser.add_argument(--seq_len, typeint, default168, help建议设置为业务周期整数倍如零售业7天周期可用168(小时)) parser.add_argument(--pred_len, typeint, default24, help根据业务需求设定如预测未来1天设为24)2.2 数据特征配置# 查看业务数据特征数量 import pandas as pd df pd.read_csv(processed_business_data.csv) num_features len(df.columns) - 1 # 减去时间列 parser.add_argument(--enc_in, typeint, defaultnum_features, help编码器输入尺寸业务特征总数) parser.add_argument(--dec_in, typeint, defaultnum_features, help解码器输入尺寸业务特征总数) parser.add_argument(--c_out, typeint, default1, help输出维度通常为1(单变量预测))2.3 训练策略优化parser.add_argument(--train_epochs, typeint, default50, help业务数据通常需要更多训练轮次) parser.add_argument(--batch_size, typeint, default32, help根据GPU内存调整业务数据可能更大) parser.add_argument(--learning_rate, typefloat, default0.0001, help业务数据建议更小的学习率)3. 滚动预测的业务落地技巧滚动预测(rolling forecast)是业务场景中最实用的预测方式其核心在于模拟实时预测环境。我们通过分步拆解实现这一过程3.1 滚动预测数据准备将业务数据按时间排序后分割训练集前80%数据验证集中间10%数据测试集最后10%数据用于滚动预测测试集需要保持与训练集完全相同的特征顺序和格式3.2 滚动预测参数配置parser.add_argument(--rollingforecast, typebool, defaultTrue) parser.add_argument(--rolling_data_path, typestr, defaultbusiness_data_test.csv) parser.add_argument(--label_len, typeint, default72, help建议设置为seq_len的1/3到1/2)3.3 预测结果后处理滚动预测会产生多个预测片段需要拼接并添加时间戳def merge_rolling_forecasts(predictions, test_data): timestamps test_data[date].iloc[-len(predictions):] result pd.DataFrame({ timestamp: timestamps, actual: test_data[OT].iloc[-len(predictions):], predicted: predictions.flatten() }) return result # 保存预测结果 merged_results.to_csv(rolling_forecast_results.csv, indexFalse)4. 业务预测结果的可视化分析不同于学术研究业务预测需要更直观的可视化来支持决策。推荐以下几种专业级可视化方式4.1 动态误差带展示import plotly.graph_objects as go fig go.Figure() fig.add_trace(go.Scatter( xresults[timestamp], yresults[actual], name实际值, linedict(colorblue) )) fig.add_trace(go.Scatter( xresults[timestamp], yresults[predicted], name预测值, linedict(colorred) )) fig.add_trace(go.Scatter( xresults[timestamp], yresults[predicted]*1.1, fillNone, modelines, linedict(width0), showlegendFalse )) fig.add_trace(go.Scatter( xresults[timestamp], yresults[predicted]*0.9, filltonexty, modelines, linedict(width0), name误差范围 )) fig.update_layout(title业务预测结果对比带10%误差范围) fig.show()4.2 关键指标计算表指标公式业务意义MAPE$\frac{100%}{n}\sum...$平均百分比误差RMSE$\sqrt{\frac{1}{n}\sum...$对异常值敏感的绝对误差业务达标率预测误差5%的样本占比直接反映预测可用性# 关键指标计算代码 def business_metrics(actual, predicted): mape np.mean(np.abs((actual - predicted)/actual)) * 100 rmse np.sqrt(np.mean((actual - predicted)**2)) 达标率 np.mean(np.abs((actual - predicted)/actual) 0.05) * 100 return {MAPE: mape, RMSE: rmse, 达标率: 达标率}5. 业务场景中的特殊问题处理实际业务部署时会遇到一些公开数据集中不常见的问题这里提供解决方案5.1 间断性业务数据对于零售业等存在营业时间断层的场景# 创建营业时间掩码 business_hours (data[timestamp].dt.hour 9) (data[timestamp].dt.hour 21) data[valid] business_hours.astype(int) # 在DataEmbedding中添加掩码处理 class BusinessDataEmbedding(nn.Module): def __init__(self, c_in, d_model, dropout0.1): super().__init__() self.value_embedding nn.Linear(c_in, d_model) self.valid_embedding nn.Embedding(2, d_model) # 0/1两种状态 def forward(self, x, x_mark): # x_mark包含valid列 val_embed self.value_embedding(x) valid_embed self.valid_embedding(x_mark[:,-1].long()) return val_embed valid_embed5.2 多周期特征融合业务数据往往包含多个周期特征日周期、周周期等# 在数据预处理阶段添加周期特征 data[day_of_week] data[timestamp].dt.dayofweek data[hour_of_day] data[timestamp].dt.hour data[is_weekend] data[day_of_week] 5 # 修改模型参数 parser.add_argument(--embed, typestr, defaulttimeF, help使用时间特征编码) parser.add_argument(--embed_type, typeint, default0, help启用完整的时间嵌入)6. 模型效果不佳时的业务调优策略当预测效果不理想时可以尝试以下业务导向的优化方法6.1 特征工程增强业务知识特征添加促销活动标记、节假日标记等衍生特征创建同比/环比特征、移动平均特征外部特征整合天气数据、经济指标等外部数据源6.2 模型结构调整# 更适合业务数据的Transformer变体配置 parser.add_argument(--n_heads, typeint, default4, help业务数据通常需要更多注意力头) parser.add_argument(--e_layers, typeint, default3, help更深的编码器捕捉复杂业务模式) parser.add_argument(--d_ff, typeint, default1024, help减小中间维度防止业务数据过拟合)6.3 预测结果后校准建立误差校正模型# 使用预测误差训练校正模型 from sklearn.ensemble import GradientBoostingRegressor # 准备校正训练数据 X_correct predictions[[predicted, hour, day_of_week]] y_correct predictions[actual] - predictions[predicted] # 训练校正模型 corrector GradientBoostingRegressor().fit(X_correct, y_correct) # 应用校正 predictions[corrected] predictions[predicted] corrector.predict(X_correct)7. 业务预测系统的持续优化建立预测监控体系是业务落地的关键性能看板实时显示预测准确率和业务影响自动重训机制当预测误差连续3天超过阈值时自动触发模型重训AB测试框架对比不同模型版本的业务指标提升# 自动化监控示例 class PredictionMonitor: def __init__(self, threshold0.1): self.error_window [] self.threshold threshold def update(self, actual, predicted): error np.mean(np.abs(actual - predicted)/actual) self.error_window.append(error) if len(self.error_window) 3: self.error_window.pop(0) if len(self.error_window) 3 and all(e self.threshold for e in self.error_window): self.trigger_retraining() def trigger_retraining(self): # 实现自动重训逻辑 print(触发模型重训...)

相关文章:

Transformer时间序列预测实战:如何用个人业务数据替换ETTh1进行滚动预测与结果分析

Transformer时间序列预测实战:从公开数据集到业务数据的无缝迁移指南 当你第一次接触Transformer时间序列预测时,可能已经跑通了ETTh1这类公开数据集的Demo。但真正令人头疼的是:如何将这套方法迁移到自己的业务数据上?本文将带你…...

OpenClaw 2.6.6 一键部署方案,Windows 本地 AI 办公助手配置

2026 年开源圈备受关注的「数字员工」OpenClaw(昵称小龙虾),GitHub 星标收获 28 万 ,凭借本地运行 零代码操作 自动执行任务的核心优势收获大量用户。很多人误以为它是普通聊天 AI,实则是能真正操控电脑的自动化工具…...

LFM2-VL-1.6B企业级应用:基于SpringBoot的智能客服系统搭建

LFM2-VL-1.6B企业级应用:基于SpringBoot的智能客服系统搭建 1. 智能客服系统的新可能 最近遇到个挺有意思的需求:某家电厂商的售后客服每天要处理大量用户上传的产品故障图片,传统做法是靠人工一张张查看、分析,再回复解决方案。…...

如何在3分钟内掌握VideoDownloadHelper:网页视频下载的终极解决方案

如何在3分钟内掌握VideoDownloadHelper:网页视频下载的终极解决方案 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper VideoDownloa…...

本地商家怎么让周边客户搜到你?聊聊 GEO 搜索优化的几个落地思路

作者按:本文基于对烟台本地商家推广痛点的观察,分享 GEO(地理定位搜索)优化的一些通用方法。文中案例来自公开可查的行业实践,不构成服务推荐。引言在烟台,我接触过不少开餐馆、做空气能、卖樱桃的老板。大…...

揭秘AI写专著技巧:借助AI专著生成工具,20万字专著快速出炉!

学术专著写作困境与AI工具的兴起 学术专著的生存力很大程度上依赖于逻辑的严密性,而逻辑推理恰恰是写作过程中最容易出错的环节。专著应该围绕一个核心观点进行有条理的论证,不仅需要深入阐释每个论点,还要有效应对不同学派的争议观点&#…...

猫抓浏览器扩展:5个技巧让你轻松获取网页媒体资源

猫抓浏览器扩展:5个技巧让你轻松获取网页媒体资源 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否经常在网上浏览时,…...

手把手教你搞定PC网站支付宝扫码登录(React + Antd 实战)

React Antd 实战:支付宝扫码登录全流程解析与优化 在PC端Web应用中集成第三方登录已成为提升用户体验的标配功能。作为国内使用率最高的支付平台之一,支付宝扫码登录不仅能降低用户注册门槛,还能有效提升转化率。本文将基于React技术栈&…...

YOLOv8安全帽检测实战:从训练到部署,在Jetson Nano上跑起来

YOLOv8安全帽检测实战:从训练到部署,在Jetson Nano上跑起来 在工业安全领域,实时检测工人是否佩戴安全帽是一项至关重要的任务。传统的人工巡检方式不仅效率低下,而且难以实现全天候监控。基于深度学习的计算机视觉技术为解决这一…...

GetQzonehistory:QQ空间历史数据备份的终极指南 [特殊字符]

GetQzonehistory:QQ空间历史数据备份的终极指南 🚀 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你知道吗?你的QQ空间里藏着多少珍贵的青春记忆&am…...

5分钟搞定黑苹果配置:OpCore-Simplify让复杂EFI构建像搭积木一样简单

5分钟搞定黑苹果配置:OpCore-Simplify让复杂EFI构建像搭积木一样简单 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 黑苹果配置对技术爱好…...

终极QQ空间备份指南:GetQzonehistory帮你一键保存青春回忆 [特殊字符]

终极QQ空间备份指南:GetQzonehistory帮你一键保存青春回忆 😊 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾担心QQ空间里的珍贵说说会随着时间消失&am…...

CodeCombat:让编程学习像玩游戏一样简单的终极指南

CodeCombat:让编程学习像玩游戏一样简单的终极指南 【免费下载链接】codecombat Game for learning how to code. 项目地址: https://gitcode.com/gh_mirrors/co/codecombat 你是否觉得编程学习枯燥乏味?CodeCombat提供了一个革命性的解决方案——…...

KMS_VL_ALL_AIO:企业级Windows与Office批量激活解决方案深度解析

KMS_VL_ALL_AIO:企业级Windows与Office批量激活解决方案深度解析 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 在Windows和Office的部署与管理中,许可证激活一直是系统…...

告别笨重模拟器:3步在Windows上直接安装APK文件的终极方案

告别笨重模拟器:3步在Windows上直接安装APK文件的终极方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾因安卓模拟器占用过多内存、启动缓慢而苦…...

5分钟极速安装:通达信缠论插件ChanlunX让技术分析智能化

5分钟极速安装:通达信缠论插件ChanlunX让技术分析智能化 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 你是否还在为复杂的缠论分析而头疼?面对K线图中的顶底分型、笔段划分、中枢…...

【管理者必看】年薪200万架构师入职3个月离职:高薪挖人的软着陆三件套

目录 01 第一周:别让他出活,让他“找病” 02 第一个月:打一场“谁都能看见的胜仗” 03 第三个月:画一张“航母发动机”的蓝图 04 管理者自查:你是不是正在浪费你的大神? Hello,见字如面…...

【卷卷观察】Physical AI(具身智能)崛起 + 开源效率革命——AI正在从“数字“走向“物理“

结论先挂出来:AI这波浪潮正在发生结构性分化,一边是数字世界的agent疯狂落地,一边是物理世界的AI开始暴走。两条线都在跑,但物理AI这一支很多人还没真正重视。上周末跟一个创业的朋友吃饭,他在做具身智能方向&#xff…...

AMD显卡驱动终极瘦身指南:Radeon Software Slimmer完全教程

AMD显卡驱动终极瘦身指南:Radeon Software Slimmer完全教程 【免费下载链接】RadeonSoftwareSlimmer Radeon Software Slimmer is a utility to trim down the bloat with Radeon Software for AMD GPUs on Microsoft Windows. 项目地址: https://gitcode.com/gh_…...

3步配置FlexASIO:让普通电脑也能享受专业级低延迟音频体验

3步配置FlexASIO:让普通电脑也能享受专业级低延迟音频体验 【免费下载链接】FlexASIO A flexible universal ASIO driver that uses the PortAudio sound I/O library. Supports WASAPI (shared and exclusive), KS, DirectSound and MME. 项目地址: https://gitc…...

微前端架构的几种实现方案

微前端架构的几种实现方案 随着前端应用复杂度的提升,微前端架构逐渐成为解决大型项目模块化与团队协作问题的热门方案。它通过将单体应用拆分为多个独立子应用,实现技术栈无关、独立开发和部署,从而提升开发效率和可维护性。本文将介绍微前…...

QuickLook.Plugin.FolderViewer:Windows上的终极文件夹快速预览解决方案

QuickLook.Plugin.FolderViewer:Windows上的终极文件夹快速预览解决方案 【免费下载链接】QuickLook.Plugin.FolderViewer Folder viewer plugin for QuickLook 项目地址: https://gitcode.com/gh_mirrors/qu/QuickLook.Plugin.FolderViewer 在日常文件管理中…...

FPGA上跑CNN,PS和PL怎么分工效率最高?以LeNet-5数字识别项目为例,聊聊软硬件协同设计

FPGA上部署LeNet-5的软硬件协同设计实战:从架构拆解到性能调优 在边缘计算场景中,FPGA凭借其并行计算能力和低功耗特性,成为轻量级CNN部署的理想载体。当我们使用Zynq这类PSPL异构平台时,如何合理划分软硬件任务、优化数据通路&am…...

终极指南:使用BSA算法实现ROS机器人全覆盖路径规划

终极指南:使用BSA算法实现ROS机器人全覆盖路径规划 【免费下载链接】full_coverage_path_planner Full coverage path planning provides a move_base_flex plugin that can plan a path that will fully cover a given area 项目地址: https://gitcode.com/gh_mi…...

LangChain + LangGraph:打造智能Tool调用与多Agent协同系统

LangChain + LangGraph 实现Tool调用与多Agent协同 目录 LangChain + LangGraph 实现Tool调用与多Agent协同 一、核心基础认知 1. 三者的角色分工 2. 工具调用的核心闭环 3. 环境准备 二、第一步:LangChain Tool的标准化定义 方式1:@tool装饰器快速定义(最常用) 方式2:Str…...

如何用CheatEngine-DMA插件实现终极内存修改:完整实战指南

如何用CheatEngine-DMA插件实现终极内存修改:完整实战指南 【免费下载链接】CheatEngine-DMA Cheat Engine Plugin for DMA users 项目地址: https://gitcode.com/gh_mirrors/ch/CheatEngine-DMA CheatEngine-DMA是一款专为DMA(直接内存访问&…...

LinkSwift:2025年最强大的网盘直链下载工具终极指南

LinkSwift:2025年最强大的网盘直链下载工具终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...

猫抓插件:如何突破网页限制,轻松下载视频音频资源

猫抓插件:如何突破网页限制,轻松下载视频音频资源 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过这样的情…...

你的Tmux窗口编号为什么乱跳?从`kill-server`到会话持久化机制的深度解读

Tmux窗口编号管理机制:从会话持久化到高效配置实践 终端复用工具Tmux以其强大的会话管理能力著称,但许多用户在窗口编号问题上频频碰壁——为什么删除所有窗口后重新启动时编号不从0开始?为什么执行kill-server后会出现"lost server&quo…...

网易云音乐油猴脚本:三分钟解锁周杰伦完整曲库与云盘快传的专业方案

网易云音乐油猴脚本:三分钟解锁周杰伦完整曲库与云盘快传的专业方案 【免费下载链接】myuserscripts 网易云音乐油猴脚本:歌曲下载、转存云盘、云盘歌曲快传、云盘匹配纠正... 项目地址: https://gitcode.com/gh_mirrors/my/myuserscripts 还在为网易云音乐中…...