You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动化处理多份DataFrame的NeuralProphet预测并合并结果

批量用NeuralProphet训练多份时序数据并合并预测结果的实现方案

问题背景

现有n份包含date(日期)和y(目标值)两列的DataFrame,需使用指定配置的NeuralProphet模型对每份数据单独训练,生成未来1年的预测结果,最终将所有预测合并为统一的DataFrame,用于导出或可视化。

实现步骤与代码

1. 前置依赖安装

确保已安装必要库:

pip install neuralprophet pandas

2. 完整自动化代码

import pandas as pd
from neuralprophet import NeuralProphet

def build_np_model():
    """按给定配置生成NeuralProphet模型实例"""
    return NeuralProphet(
        growth="linear",  # 趋势类型:'linear', 'discontinuous', 'off'
        changepoints=None, # 自定义变点日期列表(None为自动检测)
        n_changepoints=5,
        changepoints_range=0.8,
        trend_reg=0,
        trend_reg_threshold=False,
        yearly_seasonality="auto",
        weekly_seasonality="auto",
        daily_seasonality="auto",
        seasonality_mode="additive",
        seasonality_reg=0,
        n_forecasts=1,
        n_lags=0,
        num_hidden_layers=10,
        d_hidden=5,     # AR-Net隐藏层维度
        learning_rate=None,
        epochs=40,
        loss_func="Huber",
        normalize="auto",  # 归一化类型:'minmax', 'standardize', 'soft', 'off'
        impute_missing=True,
    )

def process_single_dataset(df, source_tag):
    """处理单份数据集,返回带来源标识的预测结果"""
    # 适配NeuralProphet的列名要求(日期列必须为ds,目标列必须为y)
    formatted_df = df.rename(columns={"date": "ds", "y": "y"})
    
    # 初始化并训练模型
    model = build_np_model()
    model.fit(formatted_df, freq="D")
    
    # 生成未来1年预测,同时保留历史拟合值
    future_data = model.make_future_dataframe(formatted_df, periods=365, n_historic_predictions=len(formatted_df))
    forecast_result = model.predict(future_data)
    
    # 添加来源标识,方便后续区分不同序列
    forecast_result["source_tag"] = source_tag
    return forecast_result

# ---------------------- 主执行流程 ----------------------
# 替换为实际的n份DataFrame列表
dataset_list = [df_sales, df_traffic, df_inventory]  # 示例:3份业务数据
all_forecasts = []

# 遍历处理每份数据
for idx, df in enumerate(dataset_list):
    # 用自定义标签或序号作为来源标识,比如"区域A销售数据"
    result_df = process_single_dataset(df, source_tag=f"dataset_{idx+1}")
    all_forecasts.append(result_df)

# 合并所有预测结果
final_merged_df = pd.concat(all_forecasts, ignore_index=True)

# 导出为CSV(可选,用于后续可视化或分析)
final_merged_df.to_csv("combined_time_forecasts.csv", index=False)

# 直接使用final_merged_df进行可视化,比如用matplotlib/plotly绘制多序列对比图

3. 核心细节说明

  • 列名适配:NeuralProphet强制要求日期列名为ds、目标值列名为y,因此需要先做列名映射。
  • 模型隔离:每次处理新数据时重新实例化模型,避免不同数据集的训练参数互相污染。
  • 来源标识:添加source_tag列是为了在合并后的DataFrame中快速区分不同原始数据的预测结果,便于筛选和多序列对比。
  • 预测范围控制:periods=365指定生成未来365天的预测,n_historic_predictions参数保留对原始历史数据的拟合值,方便和预测值做趋势对比。

内容的提问来源于stack exchange,提问作者Ryan Ruhany

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 01:06:30