全文鏈接:https://tecdat.cn/?p=33536
自2019年12月以來,傳染性冠狀病毒疾病2019(COVID-19)迅速席卷全球,并在短短幾個(gè)月內(nèi)達(dá)到了大流行狀態(tài)(點(diǎn)擊文末“閱讀原文”獲取完整代碼數(shù)據(jù))。
相關(guān)視頻
迄今為止,全球已報(bào)告了超過6800萬例病例。為了應(yīng)對這一大流行病,實(shí)施了公共衛(wèi)生政策,通過實(shí)施“居家令”政策來減緩COVID-19的傳播。
因此,為了檢查全球范圍內(nèi)采取的限制措施對人員流動(dòng)性的有效性,我們幫助客戶研究死亡人數(shù)與時(shí)間的關(guān)系。
問題陳述:
該項(xiàng)目的目標(biāo)是分析各國政府采取的各種限制措施對人員流動(dòng)性的影響,以控制COVID-19病例和由此導(dǎo)致的死亡人數(shù)對經(jīng)濟(jì)和失業(yè)率的影響。我們使用匯率數(shù)據(jù)來查看這些限制措施對經(jīng)濟(jì)的影響,并在此期間檢查失業(yè)率的變化。我們開發(fā)了一個(gè)模型來預(yù)測由于病例增加而導(dǎo)致的COVID-19相關(guān)死亡人數(shù)。
文章來源地址http://www.zghlxwxcb.cn/news/detail-691676.html
使用 read csv 讀取數(shù)據(jù),然后使用數(shù)據(jù)可視化探索數(shù)據(jù)
df.columns
文章來源:http://www.zghlxwxcb.cn/news/detail-691676.html
數(shù)據(jù)信息
-數(shù)據(jù)集中的分類變量:dateRep、countriesAndTerritories、geoId、countryterritoryCode、continentExp -數(shù)據(jù)集中的無限變量:日、月、年、病例數(shù)、死亡數(shù)、popData2019、Cumulative_number_for_14_days_of_COVID-19_cases_per_100000
df.info()
數(shù)據(jù)集中有 49572 個(gè)觀測值和 12 個(gè)特征值
df.shape
Out[7]:
(49572, 12)
In?[8]:
#屬性/特征之間的相關(guān)性
df.corr()
#數(shù)據(jù)集說明
df.describe()
每天的 14 天累計(jì)病例數(shù)、病例數(shù)和死亡數(shù)。
2783 14 天累計(jì)病例數(shù)不為零的天數(shù)?
報(bào)告的 14 天累計(jì)病例數(shù)為零的天數(shù)。
報(bào)告的 14 天累計(jì)死亡人數(shù)為零的天數(shù)。
# 數(shù)據(jù)清洗-檢查是否存在空值
df.isnull()
# 這些似乎是數(shù)據(jù)集中的真實(shí)讀數(shù),因此將其從數(shù)據(jù)集中刪除可能會(huì)改變分析結(jié)果。所以保持原樣。
print(df["Cumulative_number_for_14_days_of_COVID-19_cases_per_100000"].isnull().value_counts()) # 2783天中沒有累積14天病例為零
#可視化
import seaborn as sns
In?[107]:
df.columns
# 該函數(shù)接受特征/列名作為輸入。
# 繪制特征在天數(shù)和月份上的計(jì)數(shù)情況。
def plots_days_mnths(x):
plt.figure(figsize = (30,20))
feature = ['day','month']
病例數(shù)的日分析和月分析
從病例圖中我們可以看出,報(bào)告病例從 1 月份開始迅速增加,到 2020 年 7 月至 9 月達(dá)到最高峰。
而各月每天的報(bào)告病例數(shù)大致相等。
plots_days
最初幾個(gè)月報(bào)告的死亡病例有所增加,但從圖中可以看出,自 7 月份以來已得到控制。每月各天的報(bào)告死亡病例數(shù)大體相當(dāng),但略有不同。
plots_days_m
import numpy as np
截至 2010 年 10 月,全世界報(bào)告的病例總數(shù)約為 39400032 例。
df['cases'].sum()
plt.ylabel('Counts', fontsize =14)
plt.title("Histogram of cases ", fontsize = 16)
Out[114]:
[0, 100000, 0, 100]
在大多數(shù)情況下,每天報(bào)告的死亡人數(shù)在 500 人及以下。在大多數(shù)天數(shù)中,約有 50%的天數(shù)每天報(bào)告的新病例超過 40000 例。全世界平均每天報(bào)告的死亡人數(shù)約為 795 人,平均每天報(bào)告的死亡人數(shù)為 23 人。
df[['deaths', 'cases']].mean(axis = 0, skipna = True)
截至 2010 年 10 月,全世界報(bào)告的死亡總?cè)藬?shù)約為 1105353 人
df['deaths'].sum()
plt.xlabel('deaths', fontsize = 14)
plt.ylabel('Counts', fontsize =14)
# 將日期列轉(zhuǎn)換為日期時(shí)間格式,以便繪制圖表。
date = pd.to_datetime(df['dateRep'])
plt.figure(figsize =(15,10))
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
Python用RNN神經(jīng)網(wǎng)絡(luò):LSTM、GRU、回歸和ARIMA對COVID19新冠疫情人數(shù)時(shí)間序列預(yù)測
左右滑動(dòng)查看更多
01
02
03
04
用回歸法直觀顯示病例和死亡人數(shù)及其分布情況
從圖中可以看出,隨著病例數(shù)的增加,死亡人數(shù)也在增加。
顯示出這兩個(gè)特征之間的正線性關(guān)系。
#用回歸法直觀顯示病例和死亡人數(shù)及其分布情況
sns.jointplot(x='cases' , y='deaths' , data=df, kind='reg')
按年分析失業(yè)率
導(dǎo)入失業(yè)數(shù)據(jù)并將其轉(zhuǎn)換為數(shù)據(jù)框架 刪除列名 "1960 "至 "1990 "之間的所有列,因?yàn)樗鼈兪强樟?,?shù)據(jù)中沒有各縣報(bào)告的這些年份的數(shù)據(jù),還刪除了 "指標(biāo)名稱 "和 "指標(biāo)代碼 "這兩列,因?yàn)榉治霾恍枰鼈儭?/p>
#
unemp = unemp.drop(unemp.loc[:, 'Indicator Name':'1990'].columns, axis = 1)
In?[590]:
unemp.head(5)
查看 1991 年至 2020 年各國的基本統(tǒng)計(jì)數(shù)據(jù)摘要
unemp.describe()
繪制 1991 年至 2020 年各國就業(yè)率曲線的函數(shù)
def plot_unemp_region(country):
for c in country:
plt.plot(unemp.loc[c][1:],label = c)
失業(yè)率與國家總失業(yè)率對比
從 2015 年開始,愛爾蘭在控制失業(yè)率方面做得更好,因此在 2020 年持續(xù)低迷的大流行病期間,愛爾蘭在處理失業(yè)率方面做得更好。但從 2019 年開始,愛爾蘭的失業(yè)率仍有上升趨勢,應(yīng)注意避免進(jìn)一步的損害。
plot_unemp_regio
不同國家和地區(qū)的失業(yè)率
在大流行病期間,愛爾蘭在處理失業(yè)率方面似乎總體上介于歐盟和美國之間,印度在此期間與愛爾蘭緊隨其后。數(shù)據(jù)顯示,在過去一年中,美國的失業(yè)率在這些國家中最低。
plot_unemp_region(country)
skiprows = [0], index_col = "Date")
In?[588]:
cur.head()
顯示歐元相對于其他主要貨幣波動(dòng)
輸入要與歐元匯率進(jìn)行比較的貨幣列表 ,繪制 2020 年 1 月至 2020 年 10 月期間單個(gè)貨幣相對于歐元的波動(dòng)圖 ,從圖中可以看出,在過去幾個(gè)月中,歐元相對于美元、日元、人民幣等主要貨幣的匯率走低,這表明由于為控制病毒傳播而實(shí)施的封鎖和限制行動(dòng)的法律,企業(yè)和組織無法正常運(yùn)作。歐元估值受中國貨幣人民幣的影響最大,受印度貨幣盧比的影響最小。
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)
for c in currency:
plt.plot(cur.loc[:][c],label = c)
plt.ylabel("Euro", fontsize = 12)
基于每日病例預(yù)測死亡的模型開發(fā)
sns.barplot(data=df, x= 'cases' , y = 'deaths' , estimator=np.std)
從下面代碼中的相關(guān)矩陣圖中,我可以看到死亡和病例之間的相關(guān)性高達(dá) 0.736,而其他變量之間的相關(guān)性很弱。
df.corr()
sns.heatmap(df.corr())
sns.heatmap(df.corr(),annot=True , cmap='YlGnBu')
sns.pairplot(df)
通過可視化觀察數(shù)據(jù)分布,可以清楚地看出病例數(shù)的增加導(dǎo)致死亡人數(shù)的增加。因此,為了根據(jù)全國每天的病例數(shù)預(yù)測死亡人數(shù),我們使用了線性回歸法來完成這一過程,結(jié)果如下。
這段代碼用于將數(shù)組或矩陣隨機(jī)分割成訓(xùn)練集和測試集。
python
# 用于將數(shù)組或矩陣隨機(jī)分割成訓(xùn)練集和測試集
from sklearn.model_selection import train_test_split
自變量為 cases,因變量為 deaths,分別賦值給 X 和 y。
python
X, y = df[['cases']], df['deaths']
X 是包含 "cases" 條目的數(shù)據(jù)框(DataFrame)的一列,y 是包含目標(biāo)/響應(yīng)變量 "deaths" 的序列(Series)。
python
X.head(5)
數(shù)據(jù)被劃分為測試集和訓(xùn)練集,使用 train_test_split() 函數(shù),以 80:20 的比例進(jìn)行劃分。
train_test_split() 函數(shù)中的 test_size 參數(shù)設(shè)為 0.2,表示將 20% 的數(shù)據(jù)作為測試集。
python
# 訓(xùn)練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
在 [565] 處:
python
# 定義一個(gè)線性回歸模型
from sklearn import linear_model
# 使用訓(xùn)練集訓(xùn)練模型
regr.fit(X_train, y_train)
回歸系數(shù)
回歸系數(shù)是未知總體參數(shù)的估計(jì)值,表示預(yù)測變量(cases)與響應(yīng)變量(deaths)之間的關(guān)系。
beta0 的回歸系數(shù)為 0.0196,這意味著平均而言,當(dāng)沒有報(bào)告病例時(shí),死亡人數(shù)為 0.0196。
截距系數(shù)為 6.759,說明每天病例增加一個(gè)單位時(shí),死亡人數(shù)增加 6.759。例如,每增加 100 個(gè)新病例,死亡人數(shù)每天增加 7.5。
對測試數(shù)據(jù)進(jìn)行線性模型預(yù)測死亡人數(shù)
#基于測試數(shù)據(jù)進(jìn)行預(yù)測
y_pre
結(jié)果:
# 每天對應(yīng)病例數(shù)量的實(shí)際死亡人數(shù)
y_test.head(10)
結(jié)果:
df.head()
結(jié)果:
計(jì)算評估指標(biāo)需要重新調(diào)整 X 的形狀:
# 重新調(diào)整 X 的形狀以計(jì)算指標(biāo)
X.values.reshape
結(jié)果:
<function ndarray.reshape>
計(jì)算均值絕對誤差(MAE):
from sklearn.metrics import mean_squared_error,r2_score , mean_absolute_error
平均絕對誤差(MAE)
平均絕對誤差(MAE)是用于回歸模型的另一種損失函數(shù)。
MAE 是目標(biāo)變量和預(yù)測變量之間的絕對差的總和。
我們有實(shí)際值 y_test 和預(yù)測值 y_pre,可以觀察到它們之間的差異。
#MAE
mean_absolute_error(y_test , y_pre)
結(jié)果:
18.3128
R-Squared
R-squared 是衡量數(shù)據(jù)與擬合的回歸線之間接近程度的統(tǒng)計(jì)指標(biāo)。
提供了關(guān)于預(yù)測變量“cases”在我們的模型中如何解釋響應(yīng)變量“death”的程度的指示。
我的模型使用預(yù)測變量“cases”能夠解釋響應(yīng)變量“death”的變異程度為61%。
#R方分?jǐn)?shù)
r2_score(y_test , y_pre)
結(jié)果:
0.6156843
散點(diǎn)圖展示了線性回歸線以及數(shù)據(jù)圍繞該線分布的情況。
plt.scatter(X_test, y_test , color= 'blue' , linewidths=1)
g
輸出[579]:
0.615
輸入[580]:
# 構(gòu)建隨機(jī)森林模型。
輸入[581]:
from sklearn.ensemble import ExtraTreesRegressor, RandomForestRegressor
輸入[582]:
rfr.fit(X_train, y_train)
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)
結(jié)論
通過探索性數(shù)據(jù)分析,發(fā)現(xiàn)每天新冠病例增加時(shí),報(bào)告的死亡人數(shù)也會(huì)有所上升。通過將病例作為預(yù)測因子、每天的死亡人數(shù)作為目標(biāo)變量的兩個(gè)回歸模型的結(jié)果,線性模型在預(yù)測每天的死亡人數(shù)方面更準(zhǔn)確,與每天報(bào)告的病例數(shù)相關(guān)。
通過對包含失業(yè)率和歐元匯率數(shù)據(jù)的數(shù)據(jù)集進(jìn)行數(shù)據(jù)可視化分析,還能夠探索各國為限制病毒傳播而引入的限制措施對歐洲主要經(jīng)濟(jì)體和失業(yè)率產(chǎn)生的影響。
歐元兌美元、英鎊、人民幣等主要貨幣的匯率在過去幾個(gè)月中看到了下降,這表明封鎖措施對企業(yè)和國家經(jīng)濟(jì)的影響。對失業(yè)率的影響也在失業(yè)率數(shù)據(jù)中清晰可見,愛爾蘭的失業(yè)率相對于其他國家來說處理得更好,但在過去幾個(gè)月中失業(yè)率明顯上升。
參考資料
https://www.sciencedirect.com/science/article/abs/pii/S0048969720323998
點(diǎn)擊文末“閱讀原文”
獲取全文完整代碼數(shù)據(jù)資料。
本文選自《Python隨機(jī)森林、線性回歸對COVID-19疫情、匯率數(shù)據(jù)預(yù)測病例數(shù)、失業(yè)率影響可視化》。
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
【視頻】Python用LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)對不穩(wěn)定降雨量時(shí)間序列進(jìn)行預(yù)測分析|數(shù)據(jù)分享
深度學(xué)習(xí)實(shí)現(xiàn)自編碼器Autoencoder神經(jīng)網(wǎng)絡(luò)異常檢測心電圖ECG時(shí)間序列
spss modeler用決策樹神經(jīng)網(wǎng)絡(luò)預(yù)測ST的股票
Python中TensorFlow的長短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)、指數(shù)移動(dòng)平均法預(yù)測股票市場和可視化
RNN循環(huán)神經(jīng)網(wǎng)絡(luò) 、LSTM長短期記憶網(wǎng)絡(luò)實(shí)現(xiàn)時(shí)間序列長期利率預(yù)測
結(jié)合新冠疫情COVID-19股票價(jià)格預(yù)測:ARIMA,KNN和神經(jīng)網(wǎng)絡(luò)時(shí)間序列分析
深度學(xué)習(xí):Keras使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡單文本分類分析新聞組數(shù)據(jù)
用PyTorch機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)分類預(yù)測銀行客戶流失模型
PYTHON用LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)的參數(shù)優(yōu)化方法預(yù)測時(shí)間序列洗發(fā)水銷售數(shù)據(jù)
Python用Keras神經(jīng)網(wǎng)絡(luò)序列模型回歸擬合預(yù)測、準(zhǔn)確度檢查和結(jié)果可視化
R語言深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò) (CNN)對 CIFAR 圖像進(jìn)行分類:訓(xùn)練與結(jié)果評估可視化
深度學(xué)習(xí):Keras使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡單文本分類分析新聞組數(shù)據(jù)
Python用LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)對不穩(wěn)定降雨量時(shí)間序列進(jìn)行預(yù)測分析
R語言深度學(xué)習(xí)Keras循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)模型預(yù)測多輸出變量時(shí)間序列
R語言KERAS用RNN、雙向RNNS遞歸神經(jīng)網(wǎng)絡(luò)、LSTM分析預(yù)測溫度時(shí)間序列、 IMDB電影評分情感
Python用Keras神經(jīng)網(wǎng)絡(luò)序列模型回歸擬合預(yù)測、準(zhǔn)確度檢查和結(jié)果可視化
Python用LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)對不穩(wěn)定降雨量時(shí)間序列進(jìn)行預(yù)測分析
R語言中的神經(jīng)網(wǎng)絡(luò)預(yù)測時(shí)間序列:多層感知器(MLP)和極限學(xué)習(xí)機(jī)(ELM)數(shù)據(jù)分析報(bào)告
R語言深度學(xué)習(xí):用keras神經(jīng)網(wǎng)絡(luò)回歸模型預(yù)測時(shí)間序列數(shù)據(jù)
Matlab用深度學(xué)習(xí)長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對文本數(shù)據(jù)進(jìn)行分類
R語言KERAS深度學(xué)習(xí)CNN卷積神經(jīng)網(wǎng)絡(luò)分類識(shí)別手寫數(shù)字圖像數(shù)據(jù)(MNIST)
MATLAB中用BP神經(jīng)網(wǎng)絡(luò)預(yù)測人體脂肪百分比數(shù)據(jù)
Python中用PyTorch機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)分類預(yù)測銀行客戶流失模型
R語言實(shí)現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡(luò))模型進(jìn)行回歸數(shù)據(jù)分析
SAS使用鳶尾花(iris)數(shù)據(jù)集訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)(ANN)模型
【視頻】R語言實(shí)現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡(luò))模型進(jìn)行回歸數(shù)據(jù)分析
Python使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡單文本分類
R語言用神經(jīng)網(wǎng)絡(luò)改進(jìn)Nelson-Siegel模型擬合收益率曲線分析
R語言基于遞歸神經(jīng)網(wǎng)絡(luò)RNN的溫度時(shí)間序列預(yù)測
R語言神經(jīng)網(wǎng)絡(luò)模型預(yù)測車輛數(shù)量時(shí)間序列
R語言中的BP神經(jīng)網(wǎng)絡(luò)模型分析學(xué)生成績
matlab使用長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對序列數(shù)據(jù)進(jìn)行分類
R語言實(shí)現(xiàn)擬合神經(jīng)網(wǎng)絡(luò)預(yù)測和結(jié)果可視化
用R語言實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測股票實(shí)例
使用PYTHON中KERAS的LSTM遞歸神經(jīng)網(wǎng)絡(luò)進(jìn)行時(shí)間序列預(yù)測
python用于NLP的seq2seq模型實(shí)例:用Keras實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯
用于NLP的Python:使用Keras的多標(biāo)簽文本LSTM神經(jīng)網(wǎng)絡(luò)分類
到了這里,關(guān)于Python隨機(jī)森林、線性回歸對COVID-19疫情、匯率數(shù)據(jù)預(yù)測死亡率、病例數(shù)、失業(yè)率影響可視化...的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!