使用facebook的fbprophet模型预测湖北新冠肺炎确诊人数(包含源码和具体分析过程)
就在最近,一次偶然的机会学习了以下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')
首先我们将列名修改成了官方要求的’ds’和’y’,其次我们将’ds‘的格式修改成了datatime时间格式。
mingxia_jiang: 领导就要求静默登录,不需要用户点击就能享受冲浪,我还是用的第一个,然后后端说新用户进来第一次会注册未成功,不返回uid,但是返回了token,我把token直接存缓存,后面调用其他接口就会报错了,想办法让用户调用了两次登录,第一次结束就清除token
4342024: if ((labelMat[i] * Ei < -toler) and (alphas[i] < C)) or ((labelMat[i] * Ei > toler) and (alphas[i] > 0))请问这里是什么意思呀?
狠狠发: 求源代码,感谢博主大佬!1409946275@qq.com
4342024: 求源代码,感谢博主大佬! 781987595@qq.com
普通网友: 求源代码,感谢博主大佬! 1852263522@qq.com