Python用RNN迴圈神經網路:LSTM長期記憶、GRU門迴圈單元、迴歸和ARIMA對COVID
持續創作,加速成長!這是我參與「掘金日新計劃 · 6 月更文挑戰」的第9天,點選檢視活動詳情\
原文連結:http://tecdat.cn/?p=27042
原文出處:拓端資料部落公眾號
該資料根據世界各國提供的新病例資料提供。
獲取時間序列資料
df=pd.read_csv("C://global.csv")
探索資料
此表中的資料以累積的形式呈現,為了找出每天的新病例,我們需要減去這些值
df.head(10)
這些資料是根據國家和地區報告新病例的資料,但我們只想預測國家的新病例,因此我們使用 groupby 根據國家對它們進行分組
總結資料
執行 groupby 以根據一個國家的新病例來彙總資料,而不是根據地區
d1=df.groupby(['Country/Region']).sum()
描述隨機選擇的國家的累計新病例增長
from numpy.random import seed plt.plot(F[i], label = RD[i]) plt.show()
# 我們不需要前兩列d1=d1.iloc[:,2:]
# # 檢查是否有空值d1.isnull().sum().any()
我們可以對每個國家進行預測,也可以對所有國家進行預測,這次我們對所有國家進行預測
dlycnmdcas.head()
dalycnfreces.index
dal_cnre_ces.index = pd.to_datetime(dailyonfrmd_as.index)
plt.plot(dalnimedases)
ne_ces = daiy_onme_as.diff().dropna().astype(np.int64)newcaes
plt.plot(ne_s[1:])
nw_s.shape
(153,)
將資料拆分為訓練和測試資料
ct=0.75trin_aa,tet_aa = train_test_split(ne_ces, pct)
(116,)
plt.plot(tainta)plt.plot(tesata)
資料標準化
scaler = MinMaxScaler()
testa.shape
(38, 1)
建立序列
lentTe = len(ts_data)for i in range(timmp, lenhTe): X_st.append(tst_aa[i-tmStap:i]) y_tt.append(tesata[i])X_tet=np.array(X_ts)ytes=np.array(y_tt)
X_st.shape
Xtrn.shape
# 序列的樣本 X_trn[0], yran[0]
為股票價格預測設計 RNN 模型
模型:
- LSTM
-
GRU
model.summary()
model.fit(X_trn y_rin, epochs=50, batch_size=200)
yprd = (mod.predict(X_test))MSE = mean_squared_error(ytue, y_rd)plt.figure(figsize=(14,6))
meRU= Sqtal([ keras.layers.GRU(model_GRU.fit(Xtrn, ytin,epochs=50,batch_size=150)
pe_rut = {}y_ue = (y_et.reshape(-1,1))y_prd = (modlGU.predict(X_test))MSE = mean_squared_error(y_ue, ed)
用於預測新病例的機器學習演算法
準備資料
d__in.shape
moel=LinearRegression(nos=-2)
ARIMA
COVID-19 新病例預測的自迴歸綜合移動平均線
#我們不需要前兩列df1.head()daly_nfrd_cses = df1.sum(axis=0)day_cnir_ase.index = pd.to_datetime(da_onieses.index)
new_cs = dacofmecss.diff().dropna().astype(np.int64)tri_ta,tet_ata = trintt_it(nw_es, pct)
ero = men_squred_eror(ts_ar, pricos)
plt.figure(figsize=(12,7))plt.plot(tanat)
最受歡迎的見解
1.在python中使用lstm和pytorch進行時間序列預測
2.python中利用長短期記憶模型lstm進行時間序列預測分析
「其他文章」