基于Python的开源预测工具的实践

浏览: 2402

image.png

最近又发现一个很有意思的工具——facebook开源的大规模预测框架Prophet,据说它生成的预测结果足以和专业数据分析师媲美

从查阅的资料来看,Prophet开源时日不久,难怪网上很少有以实际应用来介绍的资料。就跟当初在baidu上查不到pandas资料那时候一样,米哥打算小试一把,用tushare网站过去的真实访问流量做一个未来预测,以简单的用法将facebook这个工具推荐给大家,希望对大家有一个启发。更牛逼的应用期待大家更加深入的研究和实践。

介绍

根据facebook公开的白皮书介绍,Prophet实质上是一个可加性回归模型(additive regression model),主要由四个核心构成:

  • 分段线性或者 logistic 增长曲线趋势,Prophet可以通过从数据选择变化点,自动探测变化趋势。

  • 按年为周期使用傅里叶级数(Fourier series)建模。

  • 按周为周期使用虚变量(dummy variables)建模。

  • 支持用户提供的重要节假日列表。

Prophet 针对的是商业预测任务,适用于具备以下特征的场景:

  • 针对每小时、每天或每星期的观察频次,有至少数月(理想情况的一年)的历史记录。

  • 多重显著的“人类层级”周期性:星期X以及年份。

  • 日期间隔不规则的重要节日,需要事先得知。

  • 观察缺失或是异常值在合理范围内。

  • 历史趋势变化,比如产品发布或者改写记录(logging changes)。

  • 符合非线性增长曲线的趋势,有天然上、下限或者饱和点。

对于以上官方的套话,米哥看的似懂非懂,反正经过一番折腾后,米哥用一句话总结一下它的优点吧:使用过程令人发指的简单!如果预测结果相对可靠,那简直就是逆天了。

安装

Prophet的安装很简单,一行代码搞定。

 pip install fbprophet  

但是!Prophet严重依赖pystan包,在安装之前必须先安装好这个包,虽然同样也是一行pip来安装,但是在windows上安装pystan + prophet就是一种心灵折磨,各种坑爹的坑。为了让大家少躺坑,如果您打算在windows上尝试的话,米哥这里提示几点:

1、最好选用winows7系统

2、使用Python3.5+ (用Anaconda发行版)

3、确认已安装Visual C++ Build Tools 2015

4、Prophet最好通过clone源代码来setup install

数据准备

本实验通过tushare在cnzz上的pv流量统计数据来做一个实例,下载了从2016年1月1日至今的流量数据,原始数据格式如下:

image.png

以此来预测未来一年tushare的访问流量,数据经过整理存储在一个csv文件里并通过pandas读取数据。

image.png

对pv值进行对数处理,然后查看过去一年的趋势情况。

image.png

有一点值得注意的是,Prophet对输入数据的格式有要求,时间列需命名ds,数值命名为y。

image.png

预测实现

首先需要初始Prophet对象,并将pandas的DataFrame数据传入给prophet,数据装载过程很简单也相对较快。

image.png

然后我们告诉预测模型我们需要预测未来多久的结果,这里设定一年(即365天)并执行预测命令。

image.png

预测的结果依然是一个DataFrame格式的数据,结果值列名为yhat,同时给出了最大和最小值。

image.png

通过绘图功能,我们来看一下预测效果。

image.png

通过weekly函数我们看一下,周末两天访问量最少。

m.plot_weekly(forecast)

image.png

m.plot_trend(forecast)

image.png

有兴趣获得以上完整代码和演示数据文件的同学,请在本公众号私信回复“预测”两个字自动获得下载链接。

推荐 1
本文由 挖地兔 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册