0

我正在尝试使用 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 数据框有足够的未来数据来进行预测。什么可能是这个问题的根本原因。

4

3 回答 3

4

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

df.reset_index(drop=True)
于 2019-03-30T00:20:58.003 回答
1

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

df = df[df['ds'].notna()]
于 2020-10-25T18:29:32.310 回答
0

需要确保未来每个额外的回归量都有值,例如,如果您的数据中有额外的回归量 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
于 2021-03-03T18:38:32.170 回答