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()


检查下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() 


二、拟合数据

学习数据中的规律

prophet = Prophet()
prophet.fit(df)


三、预测

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

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

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



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

预测的结果包括如下变量

'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()




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

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


成分分析

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

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


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

近期文章


pip安装问题解决办法mp.weixin.qq.com图标计算社会经济学mp.weixin.qq.com图标免费课《Python快速入门》mp.weixin.qq.com图标一行pandas代码生成哑变量mp.weixin.qq.com图标文本数据分析文章汇总(2016-至今)mp.weixin.qq.com图标


课件获取方式,请在【公众号:大邓和他的python】后台回复关键词“20191013

发布于 2019-10-12

文章被以下专栏收录

    内容涵盖数据采集、文本分析、机器学习、金融科技等;【公众号: 大邓和他的python】欢迎来公众号投稿