首页
/ NeuralForecast中使用静态外生变量的正确方法

NeuralForecast中使用静态外生变量的正确方法

2025-06-24 13:00:16作者:邬祺芯Juliet

静态外生变量在时间序列预测中的应用

在时间序列预测领域,外生变量是提升模型预测精度的重要手段。NeuralForecast作为一款强大的时间序列预测库,支持使用历史外生变量(hist_exog)和静态外生变量(stat_exog)来增强模型性能。本文将重点介绍如何正确使用静态外生变量。

静态外生变量的特点

静态外生变量是指那些在时间序列预测中不随时间变化的特征。这类变量通常包括:

  • 产品ID
  • 店铺ID
  • 地理位置信息
  • 产品类别
  • 其他固定属性

与历史外生变量不同,静态外生变量在整个时间序列中保持不变,它们代表了时间序列本身的固有属性。

常见错误与解决方案

许多用户在使用NeuralForecast时会遇到类似错误:"static exogenous variables not found in input dataset"。这通常是由于没有正确设置静态外生变量的数据格式导致的。

错误原因分析

  1. 数据格式不正确:试图将静态变量直接包含在主时间序列数据框中
  2. 变量类型问题:静态变量必须是数值类型
  3. 数据重复:为每个时间点都提供了静态变量值

正确实现方法

正确的做法是创建一个独立的数据框来存储静态外生变量,并通过static_df参数传递给模型。

# 主时间序列数据框
data = pd.DataFrame({
    'unique_id': [1] * 100,
    'ds': pd.date_range(start='2023-01-01', periods=100, freq='D'),
    'y': np.random.rand(100),
    'hist_exog1': np.random.rand(100)  # 历史外生变量
})

# 静态外生变量数据框
static_df = pd.DataFrame({
    'unique_id': 1,  # 与主数据框中的unique_id对应
    'product_id': 305,  # 静态变量1
    'store_type': 2     # 静态变量2
}, index=[0])  # 只需要一行数据

# 模型配置
nhits = NHITS(h=10, 
              input_size=20,
              hist_exog_list=['hist_exog1'],
              stat_exog_list=['product_id', 'store_type'])
              
# 训练模型
nf = NeuralForecast(models=[nhits], freq='D')
nf.fit(df=data, static_df=static_df)

最佳实践建议

  1. 数据预处理:确保静态变量已转换为数值形式,必要时使用标签编码
  2. 变量选择:选择真正具有预测价值的静态变量,避免维度灾难
  3. 内存优化:静态数据框只需包含每个unique_id的一行记录
  4. 模型验证:通过交叉验证评估静态变量的实际贡献

总结

正确使用静态外生变量可以显著提升时间序列模型的预测性能。关键在于理解静态变量的特性,并以正确的格式提供给NeuralForecast模型。通过分离静态变量到独立数据框,并确保其数值化和简洁性,可以避免常见的错误,充分发挥模型的预测能力。

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
178
262
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
868
514
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
130
183
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
272
311
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
373
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
599
58
GitNextGitNext
基于可以运行在OpenHarmony的git,提供git客户端操作能力
ArkTS
10
3