Prophet文档翻译(二)

发布时间 2023-05-16 23:16:54作者: 明天OoO你好

快速开始

Python API

Prophet遵循sklearn模型API。我们创建一个Prophet类的实例,然后调用它的fit和predict方法。

Prophet的输入始终是一个包含两列的数据框:ds和y。ds(日期时间戳)列应符合Pandas所期望的格式,最好是YYYY-MM-DD表示日期,或者YYYY-MM-DD HH:MM:SS表示时间戳。y列必须是数值型的,表示我们希望进行预测的测量值。

以一个示例来说明,我们来看一下维基百科佩顿·曼宁(Peyton Manning)页面的日志每日页面访问量的时间序列。我们使用R中的Wikipediatrend包来抓取这些数据。佩顿·曼宁提供了一个很好的例子,因为它展示了Prophet的一些特性,如多重季节性、变化的增长率以及对特殊日期(如曼宁的季后赛和超级碗出场)建模的能力。CSV文件可以在这里找到。

首先,我们导入数据:

# Python
import pandas as pd
from prophet import Prophet
# Python
df = pd.read_csv('https://raw.githubusercontent.com/facebook/prophet/main/examples/example_wp_log_peyton_manning.csv')
df.head()
DS Y
0 2007-12-10 9.590761
1 2007-12-11 8.519590
2 2007-12-12 8.183677
3 2007-12-13 8.072467
4 2007-12-14 7.893572

我们通过实例化一个新的Prophet对象来拟合模型。预测过程的任何设置都通过构造函数传递进去。然后调用它的fit方法,并传入历史数据的数据框。拟合过程应该需要1-5秒的时间。

# Python
m = Prophet()
m.fit(df)

然后,我们对包含要进行预测的日期的ds列的数据框进行预测。你可以使用辅助方法Prophet.make_future_dataframe来获取一个适当的数据框,该数据框将延伸到未来的指定天数。默认情况下,它还将包括历史日期,因此我们也可以看到模型的拟合情况。

# Python
future = m.make_future_dataframe(periods=365)
future.tail()
DS
3265 2017-01-15
3266 2017-01-16
3267 2017-01-17
3268 2017-01-18
3269 2017-01-19

predict方法将为future中的每一行分配一个预测值,命名为yhat。如果你传入历史日期,它将提供一个样本内拟合。这里的forecast对象是一个新的数据框,其中包括一个名为yhat的预测列,以及用于组件和不确定性区间的列。

# Python
forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
DS YHAT YHAT_LOWER YHAT_UPPER
3265 2017-01-15 8.211542 7.444742 8.903545
3266 2017-01-16 8.536553 7.847804 9.211145
3267 2017-01-17 8.323968 7.541829 9.035461
3268 2017-01-18 8.156621 7.404457 8.830642
3269 2017-01-19 8.168561 7.438865 8.908668

你可以通过调用Prophet.plot方法并传入你的预测数据框来绘制预测图。

# Python
fig1 = m.plot(forecast)

image

如果你想查看预测的组成部分,可以使用Prophet.plot_components方法。默认情况下,你将看到时间序列的趋势、年度季节性和每周季节性。如果包含了假日,也会在这里显示出来。

# Python
fig2 = m.plot_components(forecast)

image

使用plotly可以创建一个交互式的预测和组成部分图。你需要单独安装plotly 4.0或更高版本,因为它不会默认与prophet一起安装。你还需要安装notebook和ipywidgets包。

# Python
from prophet.plot import plot_plotly, plot_components_plotly

plot_plotly(m, forecast)

plot_components_plotly(m, forecast)

关于每个方法的可用选项的更多详细信息可以在docstrings中找到,例如通过help(Prophet)或help(Prophet.fit)。CRAN上的R参考手册提供了所有可用函数的简洁列表,每个函数都有对应的Python版本。