今天咱們將使用Facebook的「先知」模型來預測2019年12月廣東省的豬肉價格,本實驗僅供參考。html
在豬價系統網站上利用開發者工具得到過去一年廣東省的豬肉價格保存爲json格式:
https://zhujia.zhuwang.cc/areapriceinfo-440000.shtmlpython
部分數據以下:git
實際上我認爲,就豬價這樣的對象,拿一年的數據是遠遠不夠的,可是實在找不到前幾年的數據。做爲一次實驗,我暫時以過去一年的數據做爲訓練集,若是你想要更精準地預測價格,建議至少找3年的數據。github
如下教程默認你已經安裝好了Python並能夠在CMD或Terminal中使用pipjson
Prophet這個包真是一言難盡,若是你按照官方的教程來進行安裝, 你會發現啥也安裝不上(我吐了)。這裏給你們介紹個人安裝方法,避免大家走彎路:app
第一步,咱們須要安裝fbprophet的依賴PyStan:工具
pip install pystan
第二步,使用conda命令安裝(須要安裝anaconda, 搜anaconda官網安裝便可):學習
conda install -c conda-forge fbprophet
首先,利用開發者工具弄下來的數據缺乏日期,咱們須要得到過去365天的日期,並與原數據對應上:網站
# 得到2019-11-20過去365天的數據 days = [] today = datetime.date.today() for i in range(0,366,1): daybeforetoday = today + datetime.timedelta(days=-i) days.append(daybeforetoday.strftime('%Y-%m-%d')) days = list(reversed(days)) print(days)
而後咱們將豬價提取出來,並將日期和豬價轉換爲pandas的DataFrame格式:url
f = open('./data_20191120.json', 'r', encoding='utf-8') json_data = json.load(f) f.close() # 提取豬價 list_number = json_data['pigprice'] print(len(list_number), len(days)) # prophet模型預測前須要將日期列設爲ds,預測的值設爲y df = pd.DataFrame({'y':list_number, 'ds':days}) print(len(df), len(days))
最後,調用先知模型進行預測,這裏咱們只預測30天,因此periods設爲了30:
from fbprophet import Prophet # 調用"先知"生成對象 m = Prophet() # 使用"先知對象"進行預測 m.fit(df) # 得到將來30天的數據 future = m.make_future_dataframe(periods=30) forecast = m.predict(future) print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()) #在學習Python的過程當中,每每由於沒有資料或者沒人指導從而致使本身不想學下去了,所以我特地準備了個羣 592539176 ,羣裏有大量的PDF書籍、教程都給你們無償使用!無論是學習到哪一個階段的小夥伴均可以獲取到本身相對應的資料!
結果以下:
根據過去一年(可能不夠)的豬肉價格數據,預測到在下個月的今天,豬肉將會上漲到49元/公斤左右的價格。因爲數據量實在是太少了,檢測不出每年的豬肉波動性,所以這個預測獲得的數據我估計偏差比較大,可是你們只須要知道先知模型的使用方法,本文就值了。