新开一个关于时序数据预测算法的系列博客。计划整理目前的时序数列的预测方法、原理、应用、心得等。
其中Prophet因为在安装时候踩了很多雷,所以专门开一个准备篇写安装过程,下一篇讲述具体应用。
目录
前言
Prophet 简介
方法一:
方法二:
方法三:
方法四:
方法五:
近期因工作需要做时序数据用到了Facebook 的 Prophet,感觉是一个非常不错的时间序列预测工具。个人理解fbprophet类似于STL分解思路,但是Prophet 在控制程度上操作跟灵活低耦合,模块化的操作在可解释性上比传统时序模型也更有优势。
Facebook 2017年开源了一个时间序列预测的算法叫做 fbprophet,它的官方网址与基本介绍来自于以下几个网站:
Github:https://github.com/facebook/prophet
官方网址:https://facebook.github.io/prophet/
论文名字与网址:《Forecasting at scale》
从官网的介绍来看,Facebook 所提供的 prophet 算法不仅可以处理时间序列存在一些异常值的情况,也可以处理部分缺失值的情形,还能够几乎全自动地预测时间序列未来的走势。
从论文上的描述来看,这个 prophet 算法是基于时间序列分解和机器学习的拟合来做的,其中在拟合模型的时候使用了 pyStan 这个开源工具,因此能够在较快的时间内得到需要预测的结果。
除此之外,为了方便统计学家,机器学习从业者等人群的使用,prophet 同时提供了 R 语言和 Python 语言的接口。从整体的介绍来看,如果是一般的商业分析或者数据分析的需求,都可以尝试使用这个开源算法来预测未来时间序列的走势。
有木有很心动? 是不是觉得相见恨晚? 有木有觉得自己马上就要变成数据分析师了?
然后就可以愉快的按照官网的推荐安装了
fbprophet的安装过程踩到很多雷,通过查阅资料才最终排雷成功。
为节省大家时间,将踩到的坑以及个人成功的方法进行整理与大家分享~
先说结论:注意版本! 注意版本! 注意版本!建议使用python3.5版本 或者用anconda建立虚环境。
通过Anconda本人测试了python3.5、python3.6、python3.7 目前py35环境装起来最方便。
第一步:
pip install fbprophet
如果直接成功,恭喜欧皇体质,可以直接进入到下一篇应用篇了,后续不用再看。
但是大概率会报错,错到哪里去也不知道,百度之,发现安装这个 fbprophet一定要先安装pystan。
好的我们进入下一步。
第二步:
pip install pystan
这一步会有两种可能,一种可能直接成功,可以继续进行第三步。奈何本人非酋体质,系统提示安装pystan一定要先安装Microsoft visual 14.00 C++,什么鬼!然后上官网直接下载Microsoft visual 14.00 C++,结果公司网关屏蔽这个链接QAQ~~~
安装后直接 pip install pystan,期间经历了下载tar.gz的包,放在了指定目录下(如D:\)然后使用python setup.py install
然后死得很难看QAQ ,不知道是不是下载了tar.gz的包对于 pip install pystan有没有影响了,总之成功了~
ps:在另一台电脑上直接pip install pystan成功了,这一步看来问题不大。
这里还发生了一个小插曲,在Win10安装时候突然conda源链接损坏了,报错
CondaHTTPError: HTTP 404 NOT FOUND for url
Elapsed: 00:00.032390
The remote server could not find the noarch directory for the
requested channel with url: https://pypi.tuna.tsinghua.edu.cn/simple
As of conda 4.3, a valid channel must contain a `noarch/repodata.json` and
associated `noarch/repodata.json.bz2` file, even if `noarch/repodata.json` is
empty. please request that the channel administrator create
`noarch/repodata.json` and associated `noarch/repodata.json.bz2` files.
$ mkdir noarch
$ echo '{}' > noarch/repodata.json
$ bzip2 -k noarch/repodata.json
You will need to adjust your conda configuration to proceed.
Use `conda config --show channels` to view your configuration's current state.
Further configuration help can be found at .
可能是之前添加的下载镜像源导致的,问题不大。直接
conda config --remove-key channels
conda config --append channels conda-forge --append channels bioconda --append channels defaults
import pystan 无误后继续下一步。
第三步:
这时候可以继续尝试下 pip install fbprophet ,如果安装成功,可以直接进入下一篇应用,没有成功请继续。
如果电脑装有Anaconda可以换另一种方法:
conda install -c conda-forge fbprophet
这种是博主遇到的最接近成功的方法了,因为屏幕显示真的安装成功了!!!!
然鹅,在import fbprophet时候,还是会遇到报错信息,卒~~~~
此时可以视具体的报错原因,进行修改。
期间还尝试了git clone 源码安装包的方法
(py35) [chaijian@LY1F-R010608 ~]$ git clone https://github.com/facebook/prophet
正克隆到 'prophet'...
remote: Enumerating objects: 43, done.
remote: Counting objects: 100% (43/43), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 3373 (delta 23), reused 25 (delta 11), pack-reused 3330
接收对象中: 100% (3373/3373), 37.67 MiB | 546.00 KiB/s, 完成.
处理 delta 中: 100% (2074/2074), 完成.
(py35) [chaijian@LY1F-R010608 ~]$ ls
anaconda3 Callreason cr_text DATA Git_lab Order pc prophet TrafficPredict-code 通话时长分析交接材料P2
(py35) [chaijian@LY1F-R010608 ~]$ cd prophet/
(py35) [chaijian@LY1F-R010608 prophet]$ ;s
-bash: 未预期的符号 `;' 附近有语法错误
(py35) [chaijian@LY1F-R010608 prophet]$ ls
CODE_OF_CONDUCT.md docker-compose.yml Dockerfile docs examples LICENSE Makefile notebooks python R README.md
(py35) [chaijian@LY1F-R010608 prophet]$ cd python/
(py35) [chaijian@LY1F-R010608 python]$ ls
fbprophet LICENSE MANIFEST.in README.md requirements.txt scripts setup.py stan
(py35) [chaijian@LY1F-R010608 python]$ python setup.py install
running install
running bdist_egg
running egg_info
creating fbprophet.egg-info
writing fbprophet.egg-info/PKG-INFO
writing dependency_links to fbprophet.egg-info/dependency_links.txt
writing requirements to fbprophet.egg-info/requires.txt
writing top-level names to fbprophet.egg-info/top_level.txt
writing manifest file 'fbprophet.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
no previously-included directories found matching 'fbprophet/stan_model'
writing manifest file 'fbprophet.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
creating build
creating build/lib
creating build/lib/fbprophet
creating build/lib/fbprophet/stan_model
INFO:pystan:COMPILING THE C++ CODE FOR MODEL anon_model_888a84912910fa0a45b9d614b75bb8a8 NOW.
error: command 'gcc' failed with exit status 1
显示缺少gcc编译环境,这时候可以(1)有root权限的话直接安装gcc环境就可以 经测试,sudo yum install python-devel 、sudo yum install libevent-devel、yum install python-tools也可以解决 (2)没有root权限的话,请告别这种方法。(gcc环境建议还是不要轻易更改,尤其是编译模式下极容易搞崩服务器)因为本人没有root权限,放弃了此种方法。
刚才已经说过,其实主要报错还是因为python本身的版本问题报错,通过Anconda建立python3.5环境,然后conda install -c conda-forge fbprophet 一般没有问题。
这个方法经本人测试无误,Win10、linux系统有anconda环境的都可以用。所谓的安装的包也就是一段段的python代码,在Anconda科学环境中,所以可以直接将安装好的fbprophet粘贴到正确的python环境包路径中就可以了,import时候可以看在新环境下缺少什么辅助包直接补充就行了。
如图为作者将服务器中的fbprophet包直接拷贝到Win10系统中,经测试有效。
有需要的直接百度云下载就可以了,下载后解压到python的包的路径下“site-packages”这个文件夹下面。
需要的话直接百度云下载就可以了。链接:https://pan.baidu.com/s/1CyWIIH4NW1NTU4dAiFyqfg 密码:oucm