今天咱们将使用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元/公斤左右的价格。因为数据量实在是太少了,检测不出每年的猪肉波动性,所以这个预测获得的数据我估计偏差比较大,可是你们只须要知道先知模型的使用方法,本文就值了。