疫情信息查询及趋势预测系统
项目地址:http://covid19.badwei.xyz/
项目源代码已经演示视频文档等:
链接:https://pan.baidu.com/s/1UOC-kJAwH8FUyCMdIWhmOA
提取码:d2az
终于抽出时间把这个项目稍微梳理一下了,最近心烦意乱的,该是静下心来为好。
项目简单介绍:
- 整个项目包括数据情况,疫情严重城市排行榜,全国疫情情况热力图,近30天内国内新增疫情统计图,疫情总人数,省份疫情监控等几个主要板块。
- 整个项目背景用的是流动的星点作为科技色彩的点缀。整体为黑蓝色系。
- 项目除了展示整体疫情状况,还包括了对疫情城市的搜索,对拐点的预测,以及对疫情信息的自主上报功能。
- 在城市疫情查询搜索框输入城市后,即可查询此城市的所有疫情信息。
- 点击拐点预测后,即可对某个地区的疫情拐点进行预测查看。
- 点击实时预测后,会对全国新增疫情进行一周的实时预测。
- 点击自主上报按钮后,可以进行注册,注册登录后,可以进行疫情信息的自主上报,然后由管理员进行审核。
1.引言
2019年是不平凡的一年,这一年爆发了新冠疫情,这此疫情是史无前例的。这次令所有人始料未及的疫情,牵动着数亿人的心,给城市治理工作和防卫工作带来了前所未有的强大挑战。新冠疫情病毒的爆发让全世界都高度重视。各个国家都努力出台自己的政策来应对疫情。因此新型冠状病毒疫情的防控工作推上进程。国内针对疫情发布了很多通知和公告,也出台了很多政策和实施了很多措施。应用大数据技术是对这次疫情的必然选择和有力的推手,可以彰显城市治理的智慧。
2.项目准备
项目目的
用户输入地点的名称,系统能够在地图上自动反馈出查询地点的确诊人数,死亡人数,病死率等各项数据并且使用合理的算法推测出疫情拐点出现日期。
希望增加一些其他功能使得项目更加完善。
功能需求
项目架构
项目环境
3.项目功能实现
项目主要功能为:
1.将数据存入HDFS
2.Spark进行数据处理
3.处理完的数据存入Redis和Elasticsearch
4.处理完的数据进行SEIR和LSTM预测,预测结果存入ES
5.SpringBoot 连接前后端和数据库进行页面展示和查询
数据处理:
**数据描述:**csv文件数据一共有8个字段,分别是时间date、国家country、省份province、城市city、确诊人数confirmed、疑似人数suspected、治愈人数cured和死亡人数dead。
**数据处理:**编写Spark(scala)代码对数据进行处理,并将处理后的数据存进Redis数据库
前端(Vue+axios+echarts):
Vue是当今非常热门的前端渐进式框架。它是以组件形式开发前端项目的,相当于一个js库。Vue的开发模式是MVVM架构,上面章节介绍了MVVM。除了该架构,Vue还有另一个特性,即数据的双向绑定。简单解释就是数据随页面变化而变化,页面随数据变化而变化。
Axios是一个用于数据通信的轻量级框架,可以将其当作ajax的迷你版。它有的功能ajax都有,但ajax有的它不一定有。虽然如此,但是和Vue搭配使用的并不是ajax而是Axios。因为Vue只关注前端,在通信方面没必要导入一个很大的jquery,Axios已经足够使用了。它可以将数据自动转为JSON类型,还可以转换请求或响应数据等。
ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各种图表,满足各种需求。
搜索引擎(Elasticsearch):
ElasticSearch 是用 Java语言编写的分布式全文搜索引擎工具。例如百度等许多互联网公司都在使用它。本系统将会用ElasticSearch作为实时搜索的工具,提供高亮显示、分页、分词等功能。虽然本系统的数据量实际上并不大,但是ElasticSearch确实是大数据搜索引擎。
预测算法
SEIR 是传染病动力学模型(S:易感人群,E:潜伏人群,I:感病人群,R:治愈人群)。传统的SEIR模型认为潜伏者不会传染,而新冠疫情是具有传染的可能性的,所以改进SEIR模型是必然的,将增加一个新参数认定潜伏者也会传染。
使用已有数据进行SEIR的模型参数调优,利用了4阶Runge Kutta算法定义了残差方程,利用了最小二乘法函数least_sqares拟合SEIR模型参数得到参数最优值。
**LSTM:**长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络。LSTM对比传统的RNN引入了细胞状态,并使用输入门、遗忘门、输出门三种门来保持和控制信息。LSTM适合于处理和预测时间序列中间隔和延迟非常长的重要事件。因为新冠肺炎患者存在14天左右的潜伏期,所以LSTM来做短期预测非常合适。本项目的LSTM基于Pyspark实现,即使面对大量数据也能轻松快速处理。
缓存数据库Redis
Redis:Redis是用C编写的分布式内存数据库。同样Redis也是基于内存运行的,所以其读写速度是很快的。除了速度快之外,它还可以存储大量数据并将数据持久化即将数据传到硬盘中保存。本系统将Redis作为前后端之间的缓存使用,Spark处理完数据将结果存储到Redis中,Springboot整合Redis并从Redis中读取数据传送到前端展示。
评论区