時序算法研究系列之Prophet安裝(準備篇)

前言

新開一個關於時序數據預測算法的系列博客。計劃整理目前的時序數列的預測方法、原理、應用、心得等。

其中Prophet因爲在安裝時候踩了很多雷,所以專門開一個準備篇寫安裝過程,下一篇講述具體應用。

目錄

前言

Prophet 簡介

方法一:

方法二:

方法三:

方法四:

方法五:


近期因工作需要做時序數據用到了Facebook 的 Prophet,感覺是一個非常不錯的時間序列預測工具。個人理解fbprophet類似於STL分解思路,但是Prophet 在控制程度上操作跟靈活低耦合,模塊化的操作在可解釋性上比傳統時序模型也更有優勢。

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 語言的接口。從整體的介紹來看,如果是一般的商業分析或者數據分析的需求,都可以嘗試使用這個開源算法來預測未來時間序列的走勢。

有木有很心動?  是不是覺得相見恨晚?    有木有覺得自己馬上就要變成數據分析師了? 

然後就可以愉快的按照官網的推薦安裝了

                    Too young too simple ~

fbprophet的安裝過程踩到很多雷,通過查閱資料才最終排雷成功。

爲節省大家時間,將踩到的坑以及個人成功的方法進行整理與大家分享~

先說結論:注意版本! 注意版本! 注意版本!建議使用python3.5版本 或者用anconda建立虛環境。

通過Anconda本人測試了python3.5python3.6python3.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 <https://pypi.tuna.tsinghua.edu.cn/simple/noarch/repodata.json>
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 <https://conda.io/docs/config.html>.

可能是之前添加的下載鏡像源導致的,問題不大。直接

  • 刪除之前的鏡像通道(實際上只用這個就行了)
  • 重新添加默認的鏡像通道
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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章