python - 在 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。谢谢!
解决方案
除非您在拟合期间添加它,否则您无法使用附加回归量进行预测。如果您想将回归量添加到您的模型中,您应该遵循以下步骤(直接取自文档):
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)
推荐阅读
- android - Android Quickblox video call loudspeaker is not automatically on
- asp.net-core - Azure Pipeline Build Using Microsoft.AspNetCore.App 2.2
- java - 捕获 FileNotFoundException 虽然我确实尝试将 input.txt 放在任何目录中?
- c# - 没有try-catch块的C#重新抛出异常
- r - 如何按原样从 tibble 转换为 dataframe?
- javascript - Webpack 横幅插件使用来自另一个插件的文件
- python - 从简历中提取姓名,然后更改简历中的姓名
- python-3.x - 如何使用 Selenium (Python) 抓取多个页面
- php - PHP中的date_format()不返回格式化的日期
- javascript - 在鼠标滚轮后防止鼠标滚轮 1 秒