Prophet: 时间序列预测库

prophet是facebook开源的python预测库,该库的api设计与sklearn很像,也是分为fit方法和predict方法。

prophet库可以帮助我们进行

  • Saturating Forecasts

  • Trend Changepoints

  • Seasonality, Holidays Effects

  • Multiplicative Seasonality

  • Uncertainty Intervals

  • Outliers

  • Non-Daily Data

  • Diagnostics

传入prophet的数据分为两列 dsy, 其中

  • ds是pandas的日期格式,样式类似与 YYYY-MM-DDfora dateorYYYY-MM-DD HH:MM:SS

  • y列必须是数值型,代表着我们希望预测的值。

本文使用的是wiki网站日访问量(数值经过log处理)的csv数据文件。

安装

!pip3 install fbprophet

一、导入数据

import pandas as pd	
from fbprophet import Prophet	
df = pd.read_csv('example_wp_log_peyton_manning.csv')	
df.head()

640?wx_fmt=png

检查下df的数据类型

df.dtypes

Run

ds     object	
y     float64	
dtype: object

ds列必须是pandas的datetime数据类型,我们使用pandas自带的pd.to_datetime将日期转为datetime类型。顺便画个图看看

df['ds'] = df['ds'].apply(pd.to_datetime)	
df.set_index('ds').plot()

640?wx_fmt=png

二、拟合数据

学习数据中的规律

prophet = Prophet()	
prophet.fit(df)

三、预测

生成一个未来的日期的dataframe,然后用训练好的模型prophet来predict。

生成未来日期的dateframe用到 Prophet.makefuturedataframe(periods)

future = prophet.make_future_dataframe(periods=365)	
future.tail()

640?wx_fmt=png

有了未来的日期,我们就可以使用学习到的趋势来预测未来日期的走势。

预测的结果包括如下变量

'ds', 'trend', 'yhat_lower', 'yhat_upper', 'trend_lower', 'trend_upper',	
       'additive_terms', 'additive_terms_lower', 'additive_terms_upper',	
       'weekly', 'weekly_lower', 'weekly_upper', 'yearly', 'yearly_lower',	
       'yearly_upper', 'multiplicative_terms', 'multiplicative_terms_lower',	
       'multiplicative_terms_upper', 'yhat'

我们只用 'ds','yhat','yhat_lower','yhat_upper'

forecast = prophet.predict(future)	
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].head()

640?wx_fmt=png

Prophet.plot方法可以帮助我们可视化

fig1 = prophet.plot(forecast)	
print(fig1)

640?wx_fmt=png

成分分析

趋势是由不同的成分组成,比如总趋势、年、季节、月、周等等,我们要将这些成分从趋势中抽取出来看看不同成分的趋势情况

fig2 = prophet.plot_components(forecast)	
print(fig2)

640?wx_fmt=png

prophet库的API相对简单,并且由于使用了pandas标准的dataframe和matplotlib来显示数据,因此很适合python数据科学工作流程。

近期文章

课件获取方式,请在公众号后台回复关键词“20191013

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值