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

使用NeuralProphet添加未来回归器后10天预测报错求助

解决NeuralProphet添加未来回归器后的预测报错问题

问题原因

当你为NeuralProphet模型添加future_regressor后,模型在预测未来时段时,必须依赖这些回归器的未来时段数值才能完成预测。默认的make_future_dataframe仅生成时间序列(ds列),不会自动填充你添加的Volume、High等回归器的未来数据,因此触发ValueError: Future values of all user specified regressors not provided错误。

解决方案

方案1:提供未来回归器的数值数据

如果你已经有未来10天的回归器数据(比如通过其他方式预测或已知的业务数据),可以将这些数据整理成DataFrame,在调用make_future_dataframe时通过regressors_df参数传入:

import pandas as pd

# 1. 准备未来10天的回归器数据(替换为你的真实数据)
# 注意:ds列的时间需与训练数据的最后一天衔接,频率保持为"D"
future_reg_data = pd.DataFrame({
    'ds': pd.date_range(start="训练数据最后一天+1天", periods=10, freq="D"),
    'Volume': [你的未来Volume数据列表],
    'High': [你的未来High数据列表],
    'Low': [你的未来Low数据列表],
    'Adj Close': [你的未来Adj Close数据列表],
    'Open': [你的未来Open数据列表]
})

# 2. 生成预测用的future dataframe并传入回归器数据
future = m.make_future_dataframe(data, periods=10, regressors_df=future_reg_data)
forecast = m.predict(future)

方案2:改用滞后回归器(无需未来数据)

如果没有未来回归器的数据,且业务逻辑允许使用历史特征值预测未来,可以将future_regressor替换为lagged_regressor:

# 替换add_future_regressor为add_lagged_regressor
m = NeuralProphet(
    yearly_seasonality=True,
    weekly_seasonality=False,
    daily_seasonality=False,
    batch_size=64,
    epochs=1500,
)
m = m.add_lagged_regressor(name='Volume')
m = m.add_lagged_regressor(name='High')
m = m.add_lagged_regressor(name='Low')
m = m.add_lagged_regressor(name='Adj Close')
m = m.add_lagged_regressor(name='Open')

# 训练模型
metrics = m.fit(data, freq="D")  

# 预测时无需额外传入回归器数据
future = m.make_future_dataframe(data, periods=10)
forecast = m.predict(future)

滞后回归器使用历史时段的特征值来建模预测,因此不需要提供未来的回归器数据,但这种方式是否适合你的预测场景需要结合业务需求评估。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:42:41