基于python的新型冠状肺炎患病人数预测
基于Python的新型冠状肺炎患病人数预测中,使用二次指数平滑法进行预测,参数alpha=0.99的预测效果较好,预测值与实际值接近。数据来源包括腾讯疫情实时追踪和丁香医生,代码实现了数据获取、算法计算和数据可视化。预测结果显示,未来几天的患病人数可能因疫情未得到有效控制而存在偏差,仅供参考。
基于python的新型冠状肺炎患病人数预测
前言:
数据来源 腾讯提供的疫情实时追踪数据
执行该算法的单一的二次指数平滑法,其预测精度会受到算法类型和参数α取值的影响。
正在测试该算法中alpha的值及其对数据的拟合效果
使用不同的算法对数据预测可能会存在偏差,请勿传谣!
第一部分 效果展示与分析

(被标题遮挡部分:参数alpha = 0.99 预测2/03日新冠患病人数为20025人)
说明预测任务的完成时间为前一天。具体而言,2023年2月3日从0点到24点的疫情数据在2023年2月4日上午发布。
一早起床查看数据:患病人数为200471人;数据来源为腾讯疫情实时追踪系统,且本人采用的数据均为每日早晨八点的最新数据。
从分析结果来看,预测值与算法中设置的参数α=0.99高度接近。从而可以推断预测结果的准确性。至于误差问题,下面将进行详细说明。
该算法选用成功的情况,当实时数据显著高于预测数据时,很可能与其爆发期特性有关。专家预测,自2月8日前几天,该病毒将出现二次爆发,这一现象与数据异常增长相佐证。从数据上看,疫情在近期有所加剧,2月2日全天患病人数较昨日增长2800人,而2月3日全天数据较昨日增长3235人(数据来源:丁香医生),均超过了前几天的日均增长数。
2:算法选用所存在的误差:每一种算法都会存在一定程度的误差,我所选用的同样存在,但其预测结果仍能与实际数据高度契合,这种情形实属难得。
第二部分 代码实现与效果展示
一:数据获取

通过分析请求头信息,可以得知name属性设置为disease_h5,该字段存储了数据位置信息。同时,callback字段的值为jQuery341021795676971428168_1580642523637_,该值返回了当前时间戳的值,因此请求的URL为https://view.inews.qq.com/g2/getOnsInfoname=disease_h5。
二 算法代码实现:
def catch_daily():
url = 'https://view.inews.qq.com/g2/getOnsInfo?name=wuwei_ww_cn_day_counts&callback=&_=%d' % int(
time.time() * 1000)
data = json.loads(requests.get(url=url).json()['data'])
data.sort(key=lambda x: x['date'])
return data
daily_data = pd.DataFrame(catch_daily())
daily_data.head()
返回的数据集我们以pandas的DataFrame结构存储,主要处理了确诊患者的数据。此外,我们还分析了疑似患者数量、治愈人数、死亡人数,以及各省市的疫情数据变化情况。需要注意的是,该数据结构较为复杂,建议逐行查看代码或打印输出,以便更好地理解数据架构。
二次指数平滑法:
def compute_double(alpha, s):
'''
二次指数平滑
:param alpha: 平滑系数
:param s: 数据序列, list
:return: 返回二次指数平滑模型参数a, b, list
'''
s_single = compute_single(alpha, s)
s_double = compute_single(alpha, s_single)
a_double = [0 for i in range(len(s))]
b_double = [0 for i in range(len(s))]
c_double = [0 for i in range(len(s))]
d_double = [0 for i in range(len(s))]
for i in range(len(s)):
a_double[i] = 2 * s_single[i] - s_double[i] #计算二次指数平滑的a
b_double[i] = (alpha / (1 - alpha)) * (s_single[i] - s_double[i]) #计算二次指数平滑的b
c_double[i] = a_double[i]+b_double[i]
return a_double, b_double
在这里简介一下二次指数平滑法:
在本节中,我们介绍了指数平滑技术,它是一种特殊的加权平均方法。该技术主要包括一次、二次和三次指数平滑法。考虑到二次指数平滑法在实际应用中的优势,本节不对此进行详细讨论。其中,二次指数平滑法的公式为:

(1)
式中:

分别为t期和t–1期的二次指数平滑预测值,其中a表示为平滑系数,具体定义为 a = \frac{2}{1+\alpha} 。在模型中,这些预测值用于后续的计算和分析。

和

基于给定的条件,二次指数平滑预测模型用于表示以下公式:

(2)


(3)
在预测模型中,alpha参数扮演着关键角色。其取值直接影响预测的准确性。值得注意的是,指数平滑法在长期预测方面,其效果较为有限,通常仅适用于短期预测场景。此外,在新数据出现转折时,该方法的适应性较弱,这限制了其在复杂变化环境下的应用效果。尽管如此,通过结合调查预测法或专家预测法,可以有效弥补这一不足。
三 数据可视化
在数据可视化领域,我们借助Pyecharts来呈现柱状图和折线图。这些图形已呈现,让我们深入探索代码实现过程。
line = Line()
line.add_xaxis(date)
line.add_yaxis("参数alpha=0.99\n2/3日值为20025", data1)
line.add_yaxis("alpha=0.90\n2/3日值为19967", data2)
line.add_yaxis("alpha=0.80\n2/3日值为19870", data3)
line.add_yaxis("alpha=0.70\n2/3日值为19729", data4)
line.add_yaxis("alpha=0.60\n2/3日值为19522", data5)
line.add_yaxis("alpha=0.50\n2/3日值为19200", data6)
line.render("predict_line.html")
以及柱状图:
def bar() -> Bar: c = ( Bar({"theme": ThemeType.MACARONS}) .add_xaxis(list(daily_data["date"])) .add_yaxis("参数alpha=0.99", data1) .add_yaxis("alpha=0.90", data2) .add_yaxis("alpha=0.80", data3) .add_yaxis("alpha=0.70", data4) .add_yaxis("alpha=0.60", data5) .add_yaxis("alpha=0.50", data6) .set_global_opts( title_opts={"text": "新冠病毒患者预测\n--zxx(试行)"} ) ) return cbar().render("predict_bar.html")
这是一种很方便的数据可视化操作,再此安利给大家!
另外,大家在网上查看疫情时候的曲线图,柱状图也可以制作,如下:




这些图片制作方法大同小异,对于那些感兴趣的人,也可以在评论区提问,我也是个新手,对这些技巧还不是很熟练。
在国家遭遇困难时,我们能做的最大贡献就是保持学习状态,避免荒废时间。学习不能落下,不能‘收藏’而是要‘行动’,做实业是我的重要选择,这让我感到自豪。有朝一日,我希望像阿里巴巴达摩院一样,通过AI技术辅助,我们有望更快识别病例,为疫情控制贡献力量。同时,运用算法来支持抗疫工作,让医疗工作者能够更高效地分配资源,科研团队则在实验室里不断探索创新。
从今往后,我也真诚地献上一段肺腑之言,送给所有素不相识的朋友们,同时也向为抗疫而奋斗的一线工作者致以最诚挚的祝福。
“抗疫”如一场修行 “得意”时 一日看尽长安花;艰难时,潦倒新停浊酒杯,
但抗战的跋涉不能回头! 哪怕 畏途巉岩不可攀,也要 会当临绝顶,
即便无一人会,也需始终保持登临之志,不在大家的团结中汲取九万里风鹏正举的精神。
历练 也无风雨也无晴 的豁然 让我们全国人民一同 共同期待重阳节,菊花盛开时再来欣赏这美好的自然景象!
基于昨日预测数据,我采用alpha=0.99这一参数值,对未来几天进行预测。在缺乏有效控制手段的初始阶段,这些预测仅供参考。根据2/03日的预测结果,丁香医生平台的预测值为20025人患病,而实际数据为200471(截至2/04日8点),预测结果可能存在偏差,如发现错误,我将在第一时间更正;如有错误,我将在第一时间更正;如有错误,我将在第一时间更正;如有错误,我将在第一时间更正;如有错误,我将在第一时间更正。值得注意的是,本次预测仅限于确诊病例的预测,如对疑似病例、死亡人数或治愈人数感兴趣,可以进行相关预测。如有错误,我将在第一时间更正;如有错误,我将在第一时间更正;如有错误,我将在第一时间更正;如有错误,我将在第一时间更正;如有错误,我将在第一时间更正。
---------- 上海第二工业大学 18智能A1 周小夏
