Prophet文档翻译(二)快速开始
快速开始
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)
如果你想查看预测的组成部分,可以使用Prophet.plot_components方法。默认情况下,你将看到时间序列的趋势、年度季节性和每周季节性。如果包含了假日,也会在这里显示出来。
# Python
fig2 = m.plot_components(forecast)
使用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版本。