查看原文
其他

Prophet: 时间序列预测库

大邓 大邓和他的Python 2022-07-09


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数据文件。

安装

  1. !pip3 install fbprophet

一、导入数据

  1. import pandas as pd

  2. from fbprophet import Prophet


  3. df = pd.read_csv('example_wp_log_peyton_manning.csv')

  4. df.head()

检查下df的数据类型

  1. df.dtypes

Run

  1. ds object

  2. y float64

  3. dtype: object

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

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

  2. df.set_index('ds').plot()

二、拟合数据

学习数据中的规律

  1. prophet = Prophet()

  2. prophet.fit(df)

三、预测

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

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

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

  2. future.tail()

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

预测的结果包括如下变量

  1. 'ds', 'trend', 'yhat_lower', 'yhat_upper', 'trend_lower', 'trend_upper',

  2. 'additive_terms', 'additive_terms_lower', 'additive_terms_upper',

  3. 'weekly', 'weekly_lower', 'weekly_upper', 'yearly', 'yearly_lower',

  4. 'yearly_upper', 'multiplicative_terms', 'multiplicative_terms_lower',

  5. 'multiplicative_terms_upper', 'yhat'

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

  1. forecast = prophet.predict(future)

  2. forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].head()

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

  1. fig1 = prophet.plot(forecast)

  2. print(fig1)

成分分析

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

  1. fig2 = prophet.plot_components(forecast)

  2. print(fig2)

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

近期文章

pip安装问题解决办法

计算社会经济学

免费视频课《Python快速入门》

初学Python常见异常错误

Python 函数式编程指北,不只是面向对象哦

一行pandas代码生成哑变量

顺利开班 | python爬虫分析2019年杭州国庆工作坊顺利开班

圆满落幕 | Python 爬虫分析杭州国庆工作坊圆满落幕

文本数据分析文章汇总(2016-至今)


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

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存