使用自回归时使用 Neuralprophet 创建未来数据框

问题描述 投票:0回答:1

我尝试使用添加未来的数据名

future = m.make_future_dataframe(df, periods= 720, n_historic_predictions=True)

但是,仅向数据帧添加 1 行,而不是 720 行。

型号代码:

m = NeuralProphet(
    changepoints_range=0.95,
    normalize='soft', 
    n_changepoints=50,
    trend_reg=1,
    yearly_seasonality=False,
    weekly_seasonality=True,
    daily_seasonality=10,
    n_lags = 7 # If i remove this line the future dataframe works just fine
)
m.add_seasonality(name="monthly", period=30.5, fourier_order=5)
m.set_plotting_backend("plotly")
metrics = m.fit(df, freq="H")

文档没有提到 AR 会影响 make_future_dataframe 功能的任何内容 https://neuralprophet.com/code/forecaster.html

将数据帧扩展到未来的多个周期(时间步长)。仅当您预测未知的未来时才使用。新的时间戳被添加到历史数据帧中,“y”列为 NaN,因为它仍有待预测。此外,给定的未来事件和回归量被添加到新时间戳期间。返回的数据帧将包括额外生成 n_historic_predictions 所需的历史数据,其中有系列“y”的历史记录。

python forecasting facebook-prophet
1个回答
0
投票

以前也遇到过这个问题。我需要意识到的是,默认情况下,自动回归仅预测下一步。这实际上在文档中提到过,但很容易被忽视。这就是为什么只添加一行的原因。

如果您想预测多个下一步,请在神经预言机构造函数调用中使用 n_forecasts 参数

因为每个连续预测模型都需要 720 天的预测,所以还需要最后的预测。因此,要对未来创建 720 个预测,您需要运行“下一步”预测 720 次,始终将最后的猜测添加到滞后列表中。

发生在我身上的另一件更重要的事情让我头痛了几天,我使用验证数据帧来预测未来,如文档中所示,并获得了成功的结果,但此后我无法重现。问题是,如果您提供 720 行数据帧,包含真实的“y”值,NP 每次都会使用真实“y”的最后 n 滞后默默地进行 720 个单独的预测。这造成了一种错觉,即模型可以立即预测 720 天的未来……但事实并非如此,因为实际上您需要新的预测来创建更新的预测。

© www.soinside.com 2019 - 2024. All rights reserved.