使用facebook的fbprophet模型预测湖北新冠肺炎确诊人数(包含源码和具体分析过程)

本文介绍了如何使用fbprophet模型预测湖北新冠肺炎确诊人数,详细阐述了模型简介、安装步骤、数据处理、初步预测及模型调整过程。通过调整模型参数,如改变点、节假日影响等,实现了更精准的预测。最后,讨论了模型的不足及未来可能的改进方向。
摘要由CSDN通过智能技术生成

就在最近,一次偶然的机会学习了以下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'
  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
根据提供的引用内容,可以使用SIR模型预测新冠肺炎的传播情况。SIR模型是一种常见的流行病学模型,用于描述传染病在人群中的传播过程。 在Python中,可以使用科学计算库如NumPy和Matplotlib来实现SIR模型预测。下面是一个简单的示例代码,演示如何使用SIR模型预测新冠肺炎的传播情况: ```python import numpy as np import matplotlib.pyplot as plt # 定义SIR模型的参数 beta = 0.2 # 接触传染率 gamma = 0.1 # 恢复率 population = 1000 # 总人口数 infected = 10 # 初始感染人数 recovered = 0 # 初始恢复人数 susceptible = population - infected - recovered # 初始易感人数 # 定义模型的演化函数 def sir_model(susceptible, infected, recovered, beta, gamma): dS = -beta * susceptible * infected / population dI = beta * susceptible * infected / population - gamma * infected dR = gamma * infected return dS, dI, dR # 模拟传播过程 days = 100 # 模拟的天数 S = [susceptible] I = [infected] R = [recovered] for _ in range(days): dS, dI, dR = sir_model(susceptible, infected, recovered, beta, gamma) susceptible += dS infected += dI recovered += dR S.append(susceptible) I.append(infected) R.append(recovered) # 绘制曲线 plt.plot(S, label='Susceptible') plt.plot(I, label='Infected') plt.plot(R, label='Recovered') plt.xlabel('Days') plt.ylabel('Population') plt.title('SIR Model for COVID-19 Prediction') plt.legend() plt.show() ``` 这段代码使用SIR模型模拟了100天的传播过程,并绘制了易感者、感染者和恢复者的人数随时间的变化曲线。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值