就在最近,一次偶然的机会学习了以下fbprophet时序预测模型,就决定使用这个框架来进行未来20天人数的预测。但是传染病模型通常比较复杂,此次使用此模型来预测,仅仅是用来练习,结果仅供参考。
fbprophet模型简介
- 这个模型(算法)是由facebook公司在2017年正式开源的,主要用于对时间序列进行预测。
- 这个模型上手非常容易,即便是很一般的数据分析师也能够做一个比较精准的预测。
- 该模型只需要设置基本配置,并传入指定格式的数据,就可以完成数据的预测。
- 整体框架分为Modeling、Forecast Evaluation、Surface Problems以及Visually Inspect Forecasts这四个部分。
- 模型有三部分组成,增长趋势,季节趋势,节假日影响。
更多关于这个模型的介绍,腾讯技术写过一篇我见过最详细的介绍,我就不做重复工作了,大家自行查看把
腾讯技术工程 | 基于Prophet的时间序列预测
python实战
一、包的安装
首先强调一下安装fbprophet我遇到的坑:
- 需要首先安装pystan,这个包使用pip安装很难成功,建议使用anaconda安装。
- 成功安装pystan后,使用pip安装fbprophet。怪吧,因为我使用anaconda安装不上fbprophet。
二、使用的数据
我所使用的数据是湖北省从2019年12月1日到2020年2月29日的确诊人数数据【数据下载】(提取码:vmnv):
根据官网的描述,只要用 csv 文件存储两列即可,第一列的名字是 ‘ds’, 第二列的名称是 ‘y’。第一列表示时间序列的时间戳,第二列表示时间序列的取值。所以这里我们可以手动在文件中更改列名,也可以在程序中改。这里我们使用后者方法。
三、处理数据
import pandas as pd
import pystan
from fbprophet import Prophet
import matplotlib.pyplot as plt
pdata = pd.read_csv("data/20200301-nCoV-hb.csv")
pdata.rename(columns={
'date':'ds','confirmed':'y'},inplace=True)
pdata['ds'] = pd.to_datetime(pdata['ds'],format='%Y%m%d'