使用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
相关产品推荐
相关产品推荐

