外部回归变量的 fbprophet 时间序列预测 "Found NaN in column"

fbprophet time series prediction "Found NaN in column" for external regressors

我正在尝试使用 Prophet 解决时间序列问题,但我无法添加任何外部回归变量。对于我尝试的每个变量,我都不断收到相同的错误。我交叉检查了每个变量的 NaN 可用性,我 100% 确定 NaN 值不存在。我正在按照官方网站上的一般演练进行操作,我的代码类似于以下内容,

m = Prophet(growth='linear',changepoint_prior_scale=0.01, holidays = holidays)
m.add_regressor('cols')
m.fit(train_X)

preds = m.make_future_dataframe(periods=24,freq='H')
preds['cols'] = df['cols']

f = m.predict(preds)

而且 df 数据帧也有足够的未来数据来进行预测。此问题的根本原因可能是什么。

经过 2 小时的纠缠和 运行 一遍又一遍地重复相同的脚本,我终于找到了问题所在。我正在对数据帧进行一些预处理,并在这里和那里删除几行。这在 pandas 数据帧索引中造成了差距,并且出于某种原因,先知为此在列错误中抛出了 NaN。只需重新索引数据框即可解决我的问题。

df.reset_index(drop=True)

我遇到了同样的问题,这对我有用(从 ds 列中删除 nan 值,在我的情况下这是导致问题的原因):

df = df[df['ds'].notna()]

需要确保对未来的每个额外回归变量都有值,例如,如果你的数据中有一个额外的回归变量 df["month"] 并且你正在做 m.add_regressor("month") ,您需要具有跨越未来的月份值(预测长度)。这可以通过以下方式实现:

    date_length = len(train) + len(test)
    date_range = pd.DataFrame(
            pd.date_range(start_date, periods=date_length, freq="D"),
            columns=["col"])
    future["month"] =  date_range["col"].dt.month