首页 > 解决方案 > 在 fbprophet 模型中使用几个自变量

问题描述

我倾向于像这样使用 fbprophet 来单变量预测时间序列:

import pandas as pd
from fbprophet import Prophet
import matplotlib.pyplot as plt

plt.style.use('fivethirtyeight')

stock = 'FB'

df = pd.read_csv('C:/Bla/' + stock + '.csv')
df['Date'] = pd.DatetimeIndex(df['Date'])

df = df.rename(columns={'Date': 'ds',
                        'Close': 'y'})

my_model = Prophet(
    weekly_seasonality=True
    , interval_width=0.95
)
my_model.fit(df)

future_dates = my_model.make_future_dataframe(periods=5, freq='B')
future_dates.tail()

forecast = my_model.predict(future_dates)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()

my_model.plot(forecast, uncertainty=True)
plt.show()

我认为现在也可以使用多个自变量进行预测(使用 add_regressor?)。有人这样做吗?如果是这样,您能否提供一些代码示例?让我们假设自变量在上述 df 中称为 X1。谢谢!

标签: pythonpython-3.x

解决方案


除非您在拟合期间添加它,否则您无法使用附加回归量进行预测。如果您想将回归量添加到您的模型中,您应该遵循以下步骤(直接取自文档):

def nfl_sunday(ds):
    date = pd.to_datetime(ds)
    if date.weekday() == 6 and (date.month > 8 or date.month < 2):
         return 1

    else:
         return 0

df['nfl_sunday'] = df['ds'].apply(nfl_sunday)

m = Prophet()
m.add_regressor('nfl_sunday')
m.fit(df)

future['nfl_sunday'] = future['ds'].apply(nfl_sunday)

forecast = m.predict(future)
fig = m.plot_components(forecast)

推荐阅读