运用python实现2019

您所在的位置:网站首页 武汉新冠新增曲线图 运用python实现2019

运用python实现2019

2024-07-13 00:16:25| 来源: 网络整理| 查看: 265

思路

第一步,画出现有数据的散点图,大致了解其分布规律 第二步,利用现有数据拟合出曲线,求解拟合曲线的参数 第三步,利用拟合曲线对未来预测 下面严格按照这散布走模式进行

第一步 散点图

按照时间序列将确诊病人数在坐标轴上描出散点,同时添加坐标的标签,顺便更改横坐标的刻度标签,使得其看起来像随时间变化而变化的。  

#散点图 fig=plt.figure(figsize=(16,8)) #建立画布 ax=fig.add_subplot(1, 1, 1) ax.scatter(t,confirm, color="k", label="确诊人数") #真实数据散点图 ax.set_xlabel("天数") #横坐标 ax.set_ylabel("确诊人数") #纵坐标 ax.set_title("确诊人数随时间变化情况") #标题 #ax.set_xticklabels(['', '1月13号', '1月18号','1月23号','1月28号', '2月2号', '2月7号','2月13号','2月20号'], rotation=30, fontsize=12) #自定义横坐标标签 ax.set_xticklabels(['','1月13号', '1月23号', '2月2号', '2月10号','2月20号','3月1号','3月10号'], rotation=30, fontsize=10) #自定义横坐标标签 第二步 拟合

一般的拟合有两种方法,第一种用多项式拟合,因为多项式是最简单的函数结构,且任何一个连续函数都可以转化为多项式;第二种是用确定的函数拟合,需要先定义出函数表达式,这里采用logistic函数,因为从散点图可以看到这些散点大致分布在“S”形曲线的前半部分上,logistic函数表达式如下

其中 K为环境容量,即增长到最后,f(t)能达到的极限 P0为初始容量,就是t=0时刻的数量。 r为增长速率,r越大则增长越快,越快逼近K值,r越小增长越慢,越慢逼近K值。 首先定义出logistic函数,其中K,P0,r是待求的参数,然后调用from scipy.optimize里面的curve_fit函数进行拟合,会得到拟合参数,接着把拟合曲线也绘制出来

def logistic(t,K,P0,r): #定义logistic函数 exp_value=np.exp(r*(t)) return (K*exp_value*41)/(K+(exp_value-1)*41) coef, pcov = curve_fit(logistic, t, confirm) #拟合 print(coef) #logistic函数参数 y_values = logistic(t,coef[0],coef[1],coef[2]) #拟合y值 plt.plot(t,y_values,color="blue",label="拟合曲线") #画出拟合曲线 第三步 预测

有了拟合曲线的参数就能够得到疫情变化函数表达式

在这里插入图片描述

其中ttt是自变量,单位是天数,fff因变量,表示是确诊人数,单位是人,该表达式表示随着天数的增加确诊人数的变化情况,大约2月11号左右出现平稳点,疫情得到有效控制。

最终图

预测数据

  category=OptimizeWarning) [7.49955152e+04 1.00000000e+00 2.93414741e-01]

完整代码

最后给出完整代码,可以不断注释掉去看

# -*- coding: utf-8 -*- """ Created on Tue Feb 18 22:19:32 2020 project name:2019-nCoV logistic模型 @author: berlin """ import numpy as np #导入数值计算模块 import pandas as pd #导入数据处理模块 import matplotlib.pyplot as plt #导入绘图模块 from scipy.optimize import curve_fit #导入拟合模块 plt.rcParams["font.sans-serif"]="SimHei" #黑体中文 plt.rcParams["axes.unicode_minus"]=False #显示负号 data=pd.read_csv("./data/每日病例.csv") #读取数据 date=data['date'] #日期 confirm=data['confirm'] #确诊数 t=range(len(confirm)) #构造横轴 #散点图 fig=plt.figure(figsize=(16,8)) #建立画布 ax=fig.add_subplot(1, 1, 1) ax.scatter(t,confirm, color="k", label="确诊人数") #真实数据散点图 ax.set_xlabel("天数") #横坐标 ax.set_ylabel("确诊人数") #纵坐标 ax.set_title("确诊人数随时间变化情况") #标题 #ax.set_xticklabels(['', '1月13号', '1月18号','1月23号','1月28号', '2月2号', '2月7号','2月13号','2月20号'], rotation=30, fontsize=12) #自定义横坐标标签 ax.set_xticklabels(['','1月13号', '1月23号', '2月2号', '2月10号','2月20号','3月1号','3月10号'], rotation=30, fontsize=10) #自定义横坐标标签 #拟合 def logistic(t,K,P0,r): #定义logistic函数 exp_value=np.exp(r*(t)) return (K*exp_value*41)/(K+(exp_value-1)*41) coef, pcov = curve_fit(logistic, t, confirm) #拟合 print(coef) #logistic函数参数 y_values = logistic(t,coef[0], coef[1], coef[2]) #拟合y值 ax.plot(t,y_values,color="blue", label="拟合曲线") #画出拟合曲线 x=np.linspace(23,66,36) #构造期货日期 y_predict=logistic(x,coef[0], coef[1], coef[2]) #未来预测值 ax.scatter(x,y_predict, color="green",label="未来预测") #未来预测散点 ax.legend() #加标签

参考文献

1.基于python获取2019-nCoV疫情实时追踪数据

2.https://blog.csdn.net/zengbowengood/article/details/104193518



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭