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