1 import pandas as pd 2 import numpy as np 3 import matplotlib.pyplot as plt 4 from fbprophet import Prophet 5 data=pd.read_csv('covid_19_data.csv')
图 1-1 data数据集
数data括各个地方十几万条数据,这里我选取湖北省来进行确诊预测.
1 # 在湖北省数据中提取日期和确诊数两个label 2 hubei_confirm=data[['ObservationDate','Confirmed'][data['Province/State']=='Hebei'] 3 # 重新索引 4 hubei_confirm.reset_index(drop=True,inplace=True)
图1-2 提取后的湖北确诊数据
图 1-3 湖北确诊数据信息
因为没有缺失数据,我们可以直接用模型预测
1 # 将列名改为官方默认的名称 2 hubei_confirm.columns=['ds','y'] 3 # 将日期改为标准日期格式 4 hubei_confirm['ds']=pd.to_datetime(hubei_confirm['ds'])
图 1-4 更改格式后湖北确诊信息
1 m_v2=Prophet() 2 #添加中国节假日,可能影响确诊人数 3 m_v2.add_country_holidays(country_name='CN') 4 m_v2.fit(hubei_confirm)
1 # 以天为单位,预测30次,也就是预测一个月 2 future_v2=m.make_future_dataframe(freq='D',periods=30) 3 forecast_v2=m.predict(future) 4 # forecast_v2记录着预测的疫情时间,预测值,预测波动范围 5 forecast_v2[['ds','yhat','yhat_lower','yhat_upper']].tail()
图 1-5 湖北疫情确诊一个月预测图
黑色的点是实际确诊数,深蓝色的线是预测值,浅蓝色是我们预测的波动范围,可以看出预测出了未来一个月的数据。
图 1-6一个月湖北疫情确诊预测数据
我们可以根据图形看确诊人数走向,根据表格查看具体确诊人数.预测一个季度同理
1 m=Prophet() 2 m.fit(hubei_confirm) 3 future=m.make_future_dataframe(freq='D',periods=90) 4 forecast=m.predict(future) 5 forecast[['ds','yhat','yhat_lower','yhat_upper']].tail()
图 1-7 一个季度湖北疫情确诊预测数据
图 1-8 湖北疫情确诊一个季度预测图