基於Python的開源預測工具的實踐
最近又發現一個很有意思的工具——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日至今的流量數據,原始數據格式如下:
預測實現
首先需要初始Prophet對象,並將pandas的DataFrame數據傳入給prophet,數據裝載過程很簡單也相對較快。
預測的結果依然是一個DataFrame格式的數據,結果值列名為yhat,同時給出了最大和最小值。
過繪圖功能,我們來看一下預測效果。
通過weekly函數我們看一下,周末兩天訪問量最少。
m.plot_weekly(forecast)
m.plot_trend(forecast)
-------------------------------
----------------------
喜歡就關注,持續更新。
作者:挖地兔
個人公眾號:挖地兔 (有興趣獲得以上完整代碼和演示數據文件的同學,請在本公眾號私信回復「預測」兩個字自動獲得下載鏈接。)
出處:挖地兔的博客專欄
大家也可以加小編微信:tszhihu (備註:Python),拉大家到 Python愛好者社區 微信群,可以跟各位老師互相交流。謝謝。第一時間獲取視頻更新動態。
也可以關注官方微信公眾號:Python愛好者社區
友情提醒: 3月16號崔慶才老師視頻直播分享:爬取知乎所有用戶詳細信息 爬取知乎所有用戶詳細信息 (1. 分析知乎Ajax請求及爬取邏輯 2. 用Scrapy實現遞歸爬取 3. 爬取結果存儲到MongoDB ) 歡迎報名參與!!!
推薦閱讀:
※Github 上那些頂尖的貢獻組織 - 2017
※致 Element UI 團隊的公開信
※開源宇宙:衛星篇
※今天哪個行業更能代表先進生產力發展方向?