Python随机森林、线性回归对COVID-19疫情、汇率数据预测死亡率、病例数、失业率影响可视化...

news2024/9/22 9:59:00

全文链接:https://tecdat.cn/?p=33536

自2019年12月以来,传染性冠状病毒疾病2019(COVID-19)迅速席卷全球,并在短短几个月内达到了大流行状态点击文末“阅读原文”获取完整代码数据)。

相关视频

迄今为止,全球已报告了超过6800万例病例。为了应对这一大流行病,实施了公共卫生政策,通过实施“居家令”政策来减缓COVID-19的传播。

因此,为了检查全球范围内采取的限制措施对人员流动性的有效性,我们帮助客户研究死亡人数与时间的关系。

问题陈述:

该项目的目标是分析各国政府采取的各种限制措施对人员流动性的影响,以控制COVID-19病例和由此导致的死亡人数对经济和失业率的影响。我们使用汇率数据来查看这些限制措施对经济的影响,并在此期间检查失业率的变化。我们开发了一个模型来预测由于病例增加而导致的COVID-19相关死亡人数。

outside_default.png

使用 read csv 读取数据,然后使用数据可视化探索数据

df.columns

outside_default.png

数据信息

-数据集中的分类变量:dateRep、countriesAndTerritories、geoId、countryterritoryCode、continentExp -数据集中的无限变量:日、月、年、病例数、死亡数、popData2019、Cumulative_number_for_14_days_of_COVID-19_cases_per_100000

df.info()

outside_default.png

数据集中有 49572 个观测值和 12 个特征值

df.shape

Out[7]:

(49572, 12)

In [8]:

#属性/特征之间的相关性
 
df.corr()

outside_default.png

#数据集说明
 
df.describe()

outside_default.png

每天的 14 天累计病例数、病例数和死亡数。

2783 14 天累计病例数不为零的天数 

报告的 14 天累计病例数为零的天数。

报告的 14 天累计死亡人数为零的天数。

# 数据清洗-检查是否存在空值
df.isnull()

# 这些似乎是数据集中的真实读数,因此将其从数据集中删除可能会改变分析结果。所以保持原样。
print(df["Cumulative_number_for_14_days_of_COVID-19_cases_per_100000"].isnull().value_counts()) # 2783天中没有累积14天病例为零

outside_default.png

#可视化

import seaborn as sns

In [107]:

df.columns

outside_default.png

# 该函数接受特征/列名作为输入。
# 绘制特征在天数和月份上的计数情况。

def plots_days_mnths(x):
    
    plt.figure(figsize = (30,20))
    feature = ['day','month']
  • 病例数的日分析和月分析

  • 从病例图中我们可以看出,报告病例从 1 月份开始迅速增加,到 2020 年 7 月至 9 月达到最高峰。

  • 而各月每天的报告病例数大致相等。

plots_days

outside_default.png

最初几个月报告的死亡病例有所增加,但从图中可以看出,自 7 月份以来已得到控制。每月各天的报告死亡病例数大体相当,但略有不同。

plots_days_m

outside_default.png

import numpy as np

截至 2010 年 10 月,全世界报告的病例总数约为 39400032 例。

df['cases'].sum()

outside_default.png

plt.ylabel('Counts', fontsize =14)
plt.title("Histogram of cases ", fontsize = 16)

Out[114]:

[0, 100000, 0, 100]

outside_default.png

在大多数情况下,每天报告的死亡人数在 500 人及以下。在大多数天数中,约有 50%的天数每天报告的新病例超过 40000 例。全世界平均每天报告的死亡人数约为 795 人,平均每天报告的死亡人数为 23 人。

df[['deaths', 'cases']].mean(axis = 0, skipna = True)

outside_default.png

截至 2010 年 10 月,全世界报告的死亡总人数约为 1105353 人

df['deaths'].sum()

outside_default.png

plt.xlabel('deaths', fontsize = 14)
plt.ylabel('Counts', fontsize =14)

outside_default.png

outside_default.png

# 将日期列转换为日期时间格式,以便绘制图表。
date = pd.to_datetime(df['dateRep']) 

plt.figure(figsize =(15,10))

outside_default.png

outside_default.png


点击标题查阅往期内容

outside_default.png

Python用RNN神经网络:LSTM、GRU、回归和ARIMA对COVID19新冠疫情人数时间序列预测

outside_default.png

左右滑动查看更多

outside_default.png

01

outside_default.png

02

outside_default.png

03

outside_default.png

04

outside_default.png

用回归法直观显示病例和死亡人数及其分布情况

从图中可以看出,随着病例数的增加,死亡人数也在增加。

显示出这两个特征之间的正线性关系。

#用回归法直观显示病例和死亡人数及其分布情况
sns.jointplot(x='cases' , y='deaths' , data=df, kind='reg')

outside_default.png

按年分析失业率

导入失业数据并将其转换为数据框架 删除列名 "1960 "至 "1990 "之间的所有列,因为它们是空列,数据中没有各县报告的这些年份的数据,还删除了 "指标名称 "和 "指标代码 "这两列,因为分析不需要它们。

#  

unemp = unemp.drop(unemp.loc[:, 'Indicator Name':'1990'].columns, axis = 1)

In [590]:

unemp.head(5)

outside_default.png

查看 1991 年至 2020 年各国的基本统计数据摘要

unemp.describe()

outside_default.png

绘制 1991 年至 2020 年各国就业率曲线的函数

def plot_unemp_region(country):
    for c in country:
        plt.plot(unemp.loc[c][1:],label = c)

失业率与国家总失业率对比

从 2015 年开始,爱尔兰在控制失业率方面做得更好,因此在 2020 年持续低迷的大流行病期间,爱尔兰在处理失业率方面做得更好。但从 2019 年开始,爱尔兰的失业率仍有上升趋势,应注意避免进一步的损害。

plot_unemp_regio

outside_default.png

不同国家和地区的失业率

在大流行病期间,爱尔兰在处理失业率方面似乎总体上介于欧盟和美国之间,印度在此期间与爱尔兰紧随其后。数据显示,在过去一年中,美国的失业率在这些国家中最低。

plot_unemp_region(country)

outside_default.png

skiprows = [0], index_col = "Date")

In [588]:

cur.head()

outside_default.png

显示欧元相对于其他主要货币波动

输入要与欧元汇率进行比较的货币列表 ,绘制 2020 年 1 月至 2020 年 10 月期间单个货币相对于欧元的波动图 ,从图中可以看出,在过去几个月中,欧元相对于美元、日元、人民币等主要货币的汇率走低,这表明由于为控制病毒传播而实施的封锁和限制行动的法律,企业和组织无法正常运作。欧元估值受中国货币人民币的影响最大,受印度货币卢比的影响最小。

def plot_currency_rate(currency):
    
    plt.figure(figsize = (30,20))
    for c in list(enumerate(currency)):
        plt.subplot(3, 2,c[0]+1)
        plt.plot(cur.loc[:][c[1]],label = c[1])

In [303]:

plot_currency_rate(currency)

outside_default.png

for c in currency:
                    plt.plot(cur.loc[:][c],label = c)
                    plt.ylabel("Euro", fontsize = 12)

outside_default.png

基于每日病例预测死亡的模型开发

sns.barplot(data=df, x= 'cases' , y = 'deaths' , estimator=np.std)

outside_default.png

从下面代码中的相关矩阵图中,我可以看到死亡和病例之间的相关性高达 0.736,而其他变量之间的相关性很弱。

df.corr()

outside_default.png

sns.heatmap(df.corr())

outside_default.png

sns.heatmap(df.corr(),annot=True , cmap='YlGnBu')

outside_default.png

sns.pairplot(df)

outside_default.png

通过可视化观察数据分布,可以清楚地看出病例数的增加导致死亡人数的增加。因此,为了根据全国每天的病例数预测死亡人数,我们使用了线性回归法来完成这一过程,结果如下。

这段代码用于将数组或矩阵随机分割成训练集和测试集。

python
# 用于将数组或矩阵随机分割成训练集和测试集
from sklearn.model_selection import train_test_split

自变量为 cases,因变量为 deaths,分别赋值给 X 和 y。

python
X, y = df[['cases']], df['deaths']
  • X 是包含 "cases" 条目的数据框(DataFrame)的一列,y 是包含目标/响应变量 "deaths" 的序列(Series)。

python
X.head(5)
  • 数据被划分为测试集和训练集,使用 train_test_split() 函数,以 80:20 的比例进行划分。

  • train_test_split() 函数中的 test_size 参数设为 0.2,表示将 20% 的数据作为测试集。

python
# 训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

在 [565] 处:

python
# 定义一个线性回归模型
from sklearn import linear_model


# 使用训练集训练模型
regr.fit(X_train, y_train)

outside_default.png

回归系数

  • 回归系数是未知总体参数的估计值,表示预测变量(cases)与响应变量(deaths)之间的关系。

  • beta0 的回归系数为 0.0196,这意味着平均而言,当没有报告病例时,死亡人数为 0.0196。

  • 截距系数为 6.759,说明每天病例增加一个单位时,死亡人数增加 6.759。例如,每增加 100 个新病例,死亡人数每天增加 7.5。

  • 对测试数据进行线性模型预测死亡人数

#基于测试数据进行预测
y_pre

结果:

outside_default.png

# 每天对应病例数量的实际死亡人数
y_test.head(10)

结果:

outside_default.png

df.head()

结果:

outside_default.png

计算评估指标需要重新调整 X 的形状:

# 重新调整 X 的形状以计算指标
X.values.reshape

结果:

<function ndarray.reshape>

计算均值绝对误差(MAE):

from sklearn.metrics import mean_squared_error,r2_score , mean_absolute_error

平均绝对误差(MAE)

  • 平均绝对误差(MAE)是用于回归模型的另一种损失函数。

  • MAE 是目标变量和预测变量之间的绝对差的总和。

  • 我们有实际值 y_test 和预测值 y_pre,可以观察到它们之间的差异。

#MAE
mean_absolute_error(y_test , y_pre)

结果:

18.3128

R-Squared

  • R-squared 是衡量数据与拟合的回归线之间接近程度的统计指标。

  • 提供了关于预测变量“cases”在我们的模型中如何解释响应变量“death”的程度的指示。

  • 我的模型使用预测变量“cases”能够解释响应变量“death”的变异程度为61%。

#R方分数
r2_score(y_test , y_pre)

结果:

0.6156843

散点图展示了线性回归线以及数据围绕该线分布的情况。

plt.scatter(X_test, y_test , color= 'blue' , linewidths=1)

outside_default.png

g

输出[579]:

0.615

输入[580]:

# 构建随机森林模型。

输入[581]:

from sklearn.ensemble import ExtraTreesRegressor, RandomForestRegressor

输入[582]:

rfr.fit(X_train, y_train)

outside_default.png

Y_pred = rfr.predict(X_test)

输入[584]:

rfr.score(X_test, y_test)

输出[584]:

0.39

输入[585]:

plt.scatter(X_test, Y_pred, color='red')
plt.plot(X_test, y_pre, color='blue', linewidth=0.5)

outside_default.png

结论

通过探索性数据分析,发现每天新冠病例增加时,报告的死亡人数也会有所上升。通过将病例作为预测因子、每天的死亡人数作为目标变量的两个回归模型的结果,线性模型在预测每天的死亡人数方面更准确,与每天报告的病例数相关。

通过对包含失业率和欧元汇率数据的数据集进行数据可视化分析,还能够探索各国为限制病毒传播而引入的限制措施对欧洲主要经济体和失业率产生的影响。

欧元兑美元、英镑、人民币等主要货币的汇率在过去几个月中看到了下降,这表明封锁措施对企业和国家经济的影响。对失业率的影响也在失业率数据中清晰可见,爱尔兰的失业率相对于其他国家来说处理得更好,但在过去几个月中失业率明显上升。

参考资料

  1. https://www.sciencedirect.com/science/article/abs/pii/S0048969720323998


outside_default.png

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《Python随机森林、线性回归对COVID-19疫情、汇率数据预测病例数、失业率影响可视化》。

outside_default.png

outside_default.png

点击标题查阅往期内容

【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享

深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列

spss modeler用决策树神经网络预测ST的股票

Python中TensorFlow的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化

RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测

结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析

深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

用PyTorch机器学习神经网络分类预测银行客户流失模型

PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据

Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

R语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与结果评估可视化

深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

R语言深度学习Keras循环神经网络(RNN)模型预测多输出变量时间序列

R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感

Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告

R语言深度学习:用keras神经网络回归模型预测时间序列数据

Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)

MATLAB中用BP神经网络预测人体脂肪百分比数据

Python中用PyTorch机器学习神经网络分类预测银行客户流失模型

R语言实现CNN(卷积神经网络)模型进行回归数据分析

SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型

【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析

Python使用神经网络进行简单文本分类

R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析

R语言基于递归神经网络RNN的温度时间序列预测

R语言神经网络模型预测车辆数量时间序列

R语言中的BP神经网络模型分析学生成绩

matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类

R语言实现拟合神经网络预测和结果可视化

用R语言实现神经网络预测股票实例

使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测

python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译

用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

outside_default.png

outside_default.png

outside_default.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/959379.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双基证券:中国房地产开发投资可能已经见底 未来或将反弹

双基证券表示&#xff0c;差别化住宅信贷方针优化调整&#xff0c;估计将和前期认房不认贷的方针一起构成合力&#xff0c;助力居民减轻置业担负&#xff0c;有利于加快开释合理住宅需求。这也显示了方针积极有为&#xff0c;决断致力于防危险和稳增长。存量房贷利率重定价&…

sort排序字母+数字混合排序

使用ocaleCompare进行排序后&#xff0c;发现排序后的顺序是这样的&#xff08;为什么会这样排序&#xff0c;可以自己去研究一下&#xff09;&#xff0c;但这并不是自己想要的。期望顺序&#xff1a;A-11&#xff0c;A-22&#xff0c;A-111&#xff0c;A-222 在网上查找了半…

企业架构LNMP学习笔记2

企业架构分布式集群最终解决方案 集群&#xff1a;多台服务器在一起做同样的事情。 分布式&#xff1a;多台服务器在一起做不同的事情。 最终架构&#xff1a;实现负载均衡LB&#xff0c;高可用HA&#xff0c;数据库主从复制M-S&#xff0c;读写分离R-W&#xff0c;缓存中间件…

火热的低代码

低代码风头正紧&#xff0c;不管你是做后端开发、还是前端设计、销售、售前&#xff0c;如果你没接触过低代码都不好意思说自己在软件领域工作&#xff0c;这篇文章从我的角度聊聊低代码是什么、以怎么样的方式开发、及低代码的未来发展趋势。 一、低代码由来 低代码并不是一项…

红石外汇|每日汇评:如非农数据疲软的情况下,黄金是否会突破1955美元的100日移动平均线?

1、金价已进入 1,950 美元下方盘整阶段&#xff0c;关注美国非农就业数据&#xff1b; 2、在关键就业数据和美国劳工节长周末之前&#xff0c;美元出现空头回补&#xff1b; 3、9月份开始&#xff0c;金价关注 100 日移动平均线 1955 美元&#xff1b; 金价交易接近一个月高点…

记一次反弹shell的操作【非常简单】

#什么是反弹shell 通常我们对一个开启了80端口的服务器进行访问时&#xff0c;就会建立起与服务器Web服务链接&#xff0c;从而获取到服务器相应的Web服务。而反弹shell是我们开启一个端口进行监听&#xff0c;转而让服务器主动反弹一个shell来连接我们的主机&#xff0c;我们再…

Python2022年06月Python二级 -- 编程题解析

题目一: 学过编程的小程同学想帮助医生对核酸检测人群进行分流和统计&#xff0c;根据健康码的颜色分配不同的核酸检测区域: 红码:A区 橙码:B区 绿码:C区 等待核酸检测人数众多&#xff0c;但是具体检测人数未知&#xff0c;请你帮小程编写一个程序来协助医生对核酸人群进行人群…

如何创建HttpServletRequest对象

我们常用的就是在Controller层的接口入参时定义&#xff0c;这样我们就能直接用了&#xff0c;如下图&#xff1a; 但是某些情况&#xff0c;我们需要传递这个request 到各种工具类中&#xff0c;传递这个request 相对要麻烦一些&#xff0c; 我们可以不用传递&#xff0c;在…

工具类APP如何解决黏性差、停留短、打开率低等痛点?

工具产品除了需要把自己的功能做到极致之外&#xff0c;其实需要借助一些情感手段、增设一些游戏机制、输出高质量内容、搭建社区组建用户关系链等方式&#xff0c;来提高产品的用户黏性&#xff0c;衍生产品的价值链。 工具类产品由于进入门槛低&#xff0c;竞争尤为激烈&…

【UIPickerView案例03-点餐系统之随机点餐 Objective-C语言】

一、先来看看我们这个示例程序里面,随机点餐是怎么做的 1.点击:“随机点餐”按钮 大家能想到,它是怎么实现的吗 1)首先,点击”随机点餐“按钮,的时候,你要让这个pickerView,进行随机选中,那么,得监听它的点击 2)然后呢,让pickeView选中数据, 3)然后呢,把那个…

IDEA无效发行版本17

IDEA无效发行版本17 idea开发工具依赖的 jdk版本 和 项目依赖的jdk版本一定要保持 一致&#xff0c;不然会报错。 setting-->build-->compiler-》javaCompiler project->structure 这个也要保持一样。 在porm.xml文件中&#xff0c;你配置jdk版本是1.8&#xff0c;这…

【云原生】Kubernetes容器编排工具

目录 1. K8S介绍 1.1 k8s的由来 下载地址 1.2 docker编排与k8s编排相比 1.3 传统后端部署与k8s 的对比 传统部署 k8s部署 ​2. k8s的集群架构与组件 &#xff08;1&#xff09; Kube-apiserver &#xff08;2&#xff09;Kube-controller-manager &#xff08;3&a…

怎样将几个pdf合并?

在日常工作中&#xff0c;我们经常需要处理大量的PDF文件。有时候&#xff0c;我们需要将多个PDF文件合并成一个文件&#xff0c;以便于快速传输或方便查阅。虽然PDF文件本身不能进行编辑&#xff0c;但是借助专业的PDF编辑软件&#xff0c;我们可以轻松地实现将多个PDF文件合并…

SIEM中的安全事件管理

组织经常面临意外和未知的安全威胁&#xff0c;无论威胁的级别、类型或大小如何&#xff0c;它们的存在都会对企业的整体运作产生冲击&#xff0c;事件管理是尽快识别和响应这些中断以最大程度地减少其对日常业务运营的影响的过程。 什么是安全事件 安全事件是指示对组织网络…

H.264视频编码推荐的分辨率和码率配置表

Video Encoding Settings for H.264 Excellence 针对H.264编码格式&#xff0c;根据不同分辨率&#xff0c;推荐其对应的码率配置关系如下图所示&#xff1a; 如下为上限&#xff0c;超过这个上限再增加码率基本无太大意义&#xff01;根据业务场景、帧率&#xff0c;建议码率…

Python中 re.compile 函数的使用

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 以下介绍在python的re模块中怎样应用正则表达式 &#x1f447; &#x1f447; &#x1f447; 更多精彩机密、教程&#xff0c;尽在下方&#xff0c;赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备…

概念解析 | 认知雷达:有大脑的雷达

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:认知雷达。 认知雷达:有大脑的雷达 1.背景介绍 对于传统的雷达,它们通常都是预设定参数和模式来进行工作,比如发射功率、波形、扫描模式等。然而,这种方式面临着一些挑…

(数字图像处理MATLAB+Python)第十一章图像描述与分析-第三、四节:几何表述和形状描述

文章目录 一&#xff1a;几何描述&#xff08;1&#xff09;像素间几何关系A&#xff1a;邻接与连通B&#xff1a;距离 &#xff08;2&#xff09;像素间几何特征A&#xff1a;位置B&#xff1a;方向C&#xff1a;尺寸 &#xff08;3&#xff09;程序 二&#xff1a;形状描述&a…

MATLAB 动态图GIF

MATLAB 动态图GIF 前言一、创建动态图&#xff08;动态曲线、动态曲面&#xff09;1. 创建动画曲线&#xff08;MATLAB animatedline函数&#xff09;2. 创建动画曲面 二. 保存动态图三、完整示例1. 动态曲线&#xff08; y s i n ( x ) ysin(x) ysin(x)&#xff09;2. 动态曲…

YOLO目标检测——视觉显著性检测MSRA1000数据集下载分享

MSRA1000数据集是一个常用的视觉显著性检测数据集&#xff0c;它包含了1000张图像和对应的显著性标注。在以下几个应用场景中&#xff0c;MSRA1000数据集可以发挥重要作用&#xff1a;图像编辑和后期处理、图像检索和分类、视觉注意力模型、自动驾驶和智能交通等等 数据集点击下…