多事件时间序列预测:使用Neural Prophet预测各分类频次
多分类时间序列Neural Prophet预测实现方案
方案1:各分类单独训练预测(适合分类数量少于20的场景)
你已经掌握单序列预测能力,只需要对数据做拆分即可快速实现:
- 第一步:按分类字段对原数据集分组,每个分类单独提取为只含
ds(时间列)、y(频次列)的单序列数据集 - 第二步:对每个分类的数据集分别初始化Neural Prophet模型,按你熟悉的单序列流程完成拟合、生成未来时间序列、执行预测
- 第三步:将所有分类的预测结果合并,补充对应分类标识,即可得到2018年全分类的频次预测结果
方案2:全局多序列训练(Neural Prophet原生支持,分类数量多也可高效运行)
这是Neural Prophet专门为多时间序列场景设计的功能,无需拆分数据集,整体训练效率更高:
- 第一步:先统一重命名数据集列名:时间列命名为
ds,频次列命名为y,分类列命名为ID(ID是模型识别不同分类序列的核心标识,命名不能出错) - 第二步:和单序列流程一致初始化模型,无需额外调整基础参数:
from neuralprophet import NeuralProphet model = NeuralProphet(normalize="auto") # 开启auto归一化可适配不同分类的频次量级差异,提升精度
- 第三步:直接传入全量数据集拟合,模型会自动为不同分类学习独立的时序规律:
# 此处freq参数按你的数据时间粒度调整,日度数据填D,月度填M,周度填W metrics = model.fit(df, freq="D")
- 第四步:生成覆盖2018年的未来预测时间序列,会自动为每个分类生成对应长度的时间行:
# periods参数填你要预测的步数,比如日度预测全年填365,月度预测全年填12 future = model.make_future_dataframe(df, periods=365, n_historic_predictions=0)
- 第五步:执行预测,输出结果的
ID列对应不同分类,直接筛选即可得到对应分类2018年的频次预测值:
forecast = model.predict(future)
可选效果验证操作
- 调用
model.plot(forecast)可查看不同分类的预测拟合效果 - 调用
model.plot_components(forecast)可查看不同分类对应的趋势、周期等特征分量
内容的提问来源于stack exchange,提问作者Omar
相关产品推荐
相关产品推荐

