最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

拓端tecdat|Python用LSTM長短期記憶神經(jīng)網(wǎng)絡對不穩(wěn)定降雨量時間序列進行預測分析

2021-08-25 22:28 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=23544?

原文出處:拓端數(shù)據(jù)部落公眾號

下面是一個關(guān)于如何使用長短期記憶網(wǎng)絡(LSTM)來擬合一個不穩(wěn)定的時間序列的例子。

每年的降雨量數(shù)據(jù)可能是相當不穩(wěn)定的。與溫度不同,溫度通常在四季中表現(xiàn)出明顯的趨勢,而雨量作為一個時間序列可能是相當不穩(wěn)定的。夏季的降雨量與冬季的降雨量一樣多是很常見的。

下面是某地區(qū)2020年11月降雨量的圖解。

作為一個連續(xù)的神經(jīng)網(wǎng)絡,LSTM模型可以證明在解釋時間序列的波動性方面有優(yōu)勢。

使用Ljung-Box檢驗,小于0.05的p值表明這個時間序列中的殘差表現(xiàn)出隨機模式,表明有明顯的波動性。

>>> sm.stats.acorr_ljungbox(res.resid, lags=[10])

Ljung-Box檢驗

Dickey-Fuller 檢驗

?

數(shù)據(jù)操作和模型配置

該數(shù)據(jù)集由722個月的降雨量數(shù)據(jù)組成。

選擇712個數(shù)據(jù)點用于訓練和驗證,即用于建立LSTM模型。然后,過去10個月的數(shù)據(jù)被用來作為測試數(shù)據(jù),與LSTM模型的預測結(jié)果進行比較。

下面是數(shù)據(jù)集的一個片段。

然后形成一個數(shù)據(jù)集矩陣,將時間序列與過去的數(shù)值進行回歸。

  1. # 形成數(shù)據(jù)集矩陣


  2. for i in range(len(df)-previous-1):

  3. a = df[i:(i+previous), 0]

  4. dataX.append(a)

  5. dataY.append(df[i + previous, 0])

然后用MinMaxScaler對數(shù)據(jù)進行標準化處理。

將前一個參數(shù)設置為120,訓練和驗證數(shù)據(jù)集就建立起來了。作為參考,previous = 120說明模型使用從t - 120到t - 1的過去值來預測時間t的雨量值。

前一個參數(shù)的選擇要經(jīng)過試驗,但選擇120個時間段是為了確保識別到時間序列的波動性或極端值。

  1. # 訓練和驗證數(shù)據(jù)的劃分

  2. train_size = int(len(df) * 0.8)

  3. val_size = len(df) - train_size

  4. train, val = df[0:train_size,:], df[train_size:len(df),:]# 前期的數(shù)量

  5. previous = 120

然后,輸入被轉(zhuǎn)換為樣本、時間步驟、特征的格式。?

  1. # 轉(zhuǎn)換輸入為[樣本、時間步驟、特征]。

  2. np.reshape(X_train, (shape[0], 1, shape[1]))

模型訓練和預測

該模型在100個歷時中進行訓練,并指定了712個批次的大?。ǖ扔谟柧毢万炞C集中的數(shù)據(jù)點數(shù)量)。

  1. # 生成LSTM網(wǎng)絡

  2. model = tf.keras.Sequential()

  3. # 列出歷史中的所有數(shù)據(jù)

  4. print(history.history.keys())

  5. # 總結(jié)準確度變化

  6. plt.plot(history.history['loss'])

下面是訓練集與驗證集的模型損失的關(guān)系圖。

預測與實際降雨量的關(guān)系圖也被生成。

  1. # 繪制所有預測圖

  2. plt.plot(valpredPlot)

預測結(jié)果在平均方向準確性(MDA)、平均平方根誤差(RMSE)和平均預測誤差(MFE)的基礎上與驗證集進行比較。?

  1. mda(Y_val, predictions)0.9090909090909091

  2. >>> mse = mean_squared_error(Y_val, predictions)

  3. >>> rmse = sqrt(mse)

  4. >>> forecast_error

  5. >>> mean_forecast_error = np.mean(forecast_error)

?

?

  • MDA:?0.909

  • RMSE:?48.5

  • MFE:?-1.77

針對測試數(shù)據(jù)進行預測

雖然驗證集的結(jié)果相當可觀,但只有將模型預測與測試(或未見過的)數(shù)據(jù)相比較,我們才能對LSTM模型的預測能力有合理的信心。

如前所述,過去10個月的降雨數(shù)據(jù)被用作測試集。然后,LSTM模型被用來預測未來10個月的情況,然后將預測結(jié)果與實際值進行比較。

至t-120的先前值被用來預測時間t的值。

  1. # 測試(未見過的)預測

  2. np.array([tseries.iloctseries.iloc,t

獲得的結(jié)果如下

  • MDA:?0.8

  • RMSE:?49.57

  • MFE:?-6.94

過去10個月的平均降雨量為148.93毫米,預測精度顯示出與驗證集相似的性能,而且相對于整個測試集計算的平均降雨量而言,誤差很低。

結(jié)論

在這個例子中,你已經(jīng)看到:

  • 如何準備用于LSTM模型的數(shù)據(jù)

  • 構(gòu)建一個LSTM模型

  • 如何測試LSTM的預測準確性

  • 使用LSTM對不穩(wěn)定的時間序列進行建模的優(yōu)勢

最受歡迎的見解

1.用于NLP的Python:使用Keras的多標簽文本LSTM神經(jīng)網(wǎng)絡分類

2.Python中利用長短期記憶模型LSTM進行時間序列預測分析 – 預測電力消耗數(shù)據(jù)

3.python在Keras中使用LSTM解決序列問題

4.Python中用PyTorch機器學習分類預測銀行客戶流失模型

5.R語言多元Copula GARCH 模型時間序列預測

6.在r語言中使用GAM(廣義相加模型)進行電力負荷時間序列分析

7.R語言中ARMA,ARIMA(Box-Jenkins),SARIMA和ARIMAX模型用于預測時間序列數(shù)

8.R語言估計時變VAR模型時間序列的實證研究分析案例

9.用廣義加性模型GAM進行時間序列分析


拓端tecdat|Python用LSTM長短期記憶神經(jīng)網(wǎng)絡對不穩(wěn)定降雨量時間序列進行預測分析的評論 (共 條)

分享到微博請遵守國家法律
城固县| 靖安县| 临高县| 山西省| 沈阳市| 桐城市| 青田县| 游戏| 桐乡市| 伊金霍洛旗| 兴业县| 贺兰县| 惠安县| 西安市| 静乐县| 政和县| 海盐县| 博客| 喀什市| 武隆县| 楚雄市| 灵台县| 左贡县| 荃湾区| 克拉玛依市| 成安县| 台南县| 云霄县| 泽州县| 恭城| 沾化县| 滁州市| 龙山县| 工布江达县| 尉氏县| 启东市| 石渠县| 加查县| 治多县| 赫章县| 尖扎县|