fbprophet外部回归变量的时间序列预测“在列中找到NaN”

时间:2019-03-29 23:10:34

标签: python time-series facebook-prophet

我正在尝试使用先知(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数据帧具有足够的未来数据以进行预测。可能是此问题的根本原因。

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,这对我有用(从ds列中删除引起问题的ds的nan值):

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

答案 1 :(得分:0)

经过2个小时的反复整理和运行相同的脚本,我终于找到了问题。我正在对数据框进行一些预处理,然后在此处和此处放几行。这导致了熊猫数据框索引中的间隔,并且由于某种原因,先知为此为此将NaN抛出了列错误。只需重新索引数据框即可解决我的问题。

df.reset_index(drop=True)

答案 2 :(得分: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
相关问题