av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

基于Keras的LSTM多變量時間序列預(yù)測

諸如長短期記憶(LSTM)循環(huán)神經(jīng)網(wǎng)絡(luò)的神經(jīng)神經(jīng)網(wǎng)絡(luò)幾乎可以無縫建模具備多個輸入變量的問題。

成都創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、繁峙網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為繁峙等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

這為時間序列預(yù)測帶來極大益處,因為經(jīng)典線性方法難以適應(yīng)多變量或多輸入預(yù)測問題。

通過本教程,你將學(xué)會如何在 Keras 深度學(xué)習(xí)庫中搭建用于多變量時間序列預(yù)測的 LSTM 模型。

完成本教程后,你將學(xué)會:

  • 如何將原始數(shù)據(jù)集轉(zhuǎn)換成適用于時間序列預(yù)測的數(shù)據(jù)集
  • 如何處理數(shù)據(jù)并使其適應(yīng)用于多變量時間序列預(yù)測問題的 LSTM 模型。
  • 如何做出預(yù)測并將結(jié)果重新調(diào)整到初始單元。

我們開始吧!

教程概述

本教程分為三大部分,分別是:

  • 空氣污染預(yù)測
  • 準備基本數(shù)據(jù)
  • 搭建多變量 LSTM 預(yù)測模型

Python 環(huán)境

  • 本教程假設(shè)你配置了 Python SciPy 環(huán)境,Python 2/3 皆可。
  • 你還需要使用 TensorFlow 或 Theano 后端安裝 Keras(2.0 或更高版本)。
  • 本教程還假定你已經(jīng)安裝了 scikit-learn、Pandas、NumPy 和 Matplotlib。

空氣污染預(yù)測

本教程將使用空氣質(zhì)量數(shù)據(jù)集。這是美國駐北京大使館記錄了五年的數(shù)據(jù)集,其按小時報告天氣和污染水平。

此數(shù)據(jù)包括日期、PM2.5 濃度,以及天氣信息,包括露點、溫度、氣壓、風(fēng)向、風(fēng)速和降水時長。原始數(shù)據(jù)中的完整特征列表如下:

  • NO:行號
  • year: 年份
  • month: 月份
  • day: 日
  • hour: 時
  • pm2.5: PM2.5 濃度
  • DEWP: 露點
  • TEMP: 溫度
  • PRES: 氣壓
  • cbwd: 組合風(fēng)向
  • Iws: 累計風(fēng)速
  • s: 累積降雪時間
  • Ir: 累積降雨時間

我們可以使用這些數(shù)據(jù)并構(gòu)建一個預(yù)測問題,我們根據(jù)過去幾個小時的天氣條件和污染狀況預(yù)測下一個小時的污染狀況。此數(shù)據(jù)集亦可用于構(gòu)建其他預(yù)測問題。

您可以從 UCI 機器學(xué)習(xí)庫中下載此數(shù)據(jù)集。

下載地址:https://archive.ics.uci.edu/ml/datasets/Beijing+PM2.5+Data

下載數(shù)據(jù)集并將其命名為「raw.csv」,放置到當前工作目錄。

基本數(shù)據(jù)準備

原始數(shù)據(jù)尚不可用,我們必須先處理它。

以下是原始數(shù)據(jù)集的前幾行數(shù)據(jù)。

第一步,將零散的日期時間信息整合為一個單一的日期時間,以便我們可以將其用作 Pandas 的索引。

快速檢查第一天的 pm2.5 的 NA 值。因此,我們需要刪除第一行數(shù)據(jù)。在數(shù)據(jù)集中還有幾個零散的「NA」值,我們現(xiàn)在可以用 0 值標記它們。

以下腳本用于加載原始數(shù)據(jù)集,并將日期時間信息解析為 Pandas DataFrame 索引?!窷o」列被刪除,每列被指定更加清晰的名稱。最后,將 NA 值替換為「0」值,并刪除前一天的數(shù)據(jù)。

運行該例子打印轉(zhuǎn)換后的數(shù)據(jù)集的前 5 行,并將轉(zhuǎn)換后的數(shù)據(jù)集保存到「pollution.csv」。

現(xiàn)在數(shù)據(jù)已經(jīng)處理得簡單易用,我們可以為每個天氣參數(shù)創(chuàng)建快圖,看看能得到什么。

下面的代碼加載了「pollution.csv」文件,并且為每個參數(shù)(除用于分類的風(fēng)速以外)繪制了單獨的子圖。

運行上例創(chuàng)建一個具有 7 個子圖的大圖,顯示每個變量 5 年中的數(shù)據(jù)。

空氣污染時間序列折線圖

多變量 LSTM 預(yù)測模型

本節(jié),我們將調(diào)整一個 LSTM 模型以適合此預(yù)測問題。

1. LSTM 數(shù)據(jù)準備

第一步是為 LSTM 模型準備污染數(shù)據(jù)集,這涉及將數(shù)據(jù)集用作監(jiān)督學(xué)習(xí)問題以及輸入變量歸一化。

我們將監(jiān)督學(xué)習(xí)問題設(shè)定為:根據(jù)上一個時間段的污染指數(shù)和天氣條件,預(yù)測當前時刻(t)的污染情況。

這個表述簡單直接,只是為了說明問題。你可以探索的一些替代方案包括:

  • 根據(jù)過去一天的天氣情況和污染狀況,預(yù)測下一個小時的污染狀況。
  • 根據(jù)過去一天的天氣情況和污染狀況以及下一個小時的「預(yù)期」天氣條件,預(yù)測下一個小時的污染狀況。

我們可以使用之前博客中編寫的 series_to_supervised()函數(shù)來轉(zhuǎn)換數(shù)據(jù)集:

  • 如何用 Python 將時間序列問題轉(zhuǎn)換為監(jiān)督學(xué)習(xí)問題(https://machinelearningmastery.com/convert-time-series-supervised-learning-problem-python/)

首先加載「pollution.csv」數(shù)據(jù)集。給風(fēng)速特征打上標注(整型編碼)。如果你再深入一點就會發(fā)現(xiàn),整形編碼可以進一步進行一位有效編碼(one-hot encoding)。

接下來,所有特征都被歸一化,然后數(shù)據(jù)集轉(zhuǎn)換成監(jiān)督學(xué)習(xí)問題。之后,刪除要預(yù)測的時刻(t)的天氣變量。

完整的代碼列表如下。

運行上例打印轉(zhuǎn)換后的數(shù)據(jù)集的前 5 行。我們可以看到 8 個輸入變量(輸入序列)和 1 個輸出變量(當前的污染水平)。

這個數(shù)據(jù)準備過程很簡單,我們可以深入了解更多相關(guān)知識,包括:

  • 對風(fēng)速進行一位有效編碼
  • 用差值和季節(jié)性調(diào)整使所有序列數(shù)據(jù)恒定
  • 提供超過 1 小時的輸入時間步長

最后也可能是最重要的一點,在學(xué)習(xí)序列預(yù)測問題時,LSTM 通過時間步進行反向傳播。

2. 定義和擬合模型

在本節(jié)中,我們將擬合多變量輸入數(shù)據(jù)的 LSTM 模型。

首先,我們必須將準備好的數(shù)據(jù)集分成訓(xùn)練集和測試集。為了加快此次講解的模型訓(xùn)練,我們將僅使用第一年的數(shù)據(jù)來擬合模型,然后用其余 4 年的數(shù)據(jù)進行評估。

下面的示例將數(shù)據(jù)集分成訓(xùn)練集和測試集,然后將訓(xùn)練集和測試集分別分成輸入和輸出變量。最后,將輸入(X)重構(gòu)為 LSTM 預(yù)期的 3D 格式,即 [樣本,時間步,特征]。

運行此示例輸出訓(xùn)練數(shù)據(jù)的維度,并通過測試約 9K 小時的數(shù)據(jù)對輸入和輸出集合進行訓(xùn)練,約 35K 小時的數(shù)據(jù)進行測試。

我們現(xiàn)在可以定義和擬合 LSTM 模型了。

我們將在第一個隱藏層中定義具有 50 個神經(jīng)元的 LSTM,在輸出層中定義 1 個用于預(yù)測污染的神經(jīng)元。輸入數(shù)據(jù)維度將是 1 個具有 8 個特征的時間步長。

我們將使用平均絕對誤差(MAE)損失函數(shù)和高效的隨機梯度下降的 Adam 版本。

該模型將適用于 50 個 epoch,批大小為 72 的訓(xùn)練。請記住,每個批結(jié)束時,Keras 中的 LSTM 的內(nèi)部狀態(tài)都將重置,因此內(nèi)部狀態(tài)是天數(shù)的函數(shù)可能有所幫助(試著證明它)。

最后,我們通過在 fit()函數(shù)中設(shè)置 validation_data 參數(shù)來跟蹤訓(xùn)練過程中的訓(xùn)練和測試損失,并在運行結(jié)束時繪制訓(xùn)練和測試損失圖。

3. 評估模型

模型擬合后,我們可以預(yù)測整個測試數(shù)據(jù)集。

我們將預(yù)測與測試數(shù)據(jù)集相結(jié)合,并調(diào)整測試數(shù)據(jù)集的規(guī)模。我們還用預(yù)期的污染指數(shù)來調(diào)整測試數(shù)據(jù)集的規(guī)模。

通過初始預(yù)測值和實際值,我們可以計算模型的誤差分數(shù)。在這種情況下,我們可以計算出與變量相同的單元誤差的均方根誤差(RMSE)。

4. 完整示例

完整示例如下所示。

運行示例首先創(chuàng)建一幅圖,顯示訓(xùn)練中的訓(xùn)練和測試損失。

有趣的是,我們可以看到測試損失低于訓(xùn)練損失。該模型可能過度擬合訓(xùn)練數(shù)據(jù)。在訓(xùn)練過程中測繪 RMSE 可能會使問題明朗。

多變量 LSTM 模型訓(xùn)練過程中的訓(xùn)練、測試損失折線圖

在每個訓(xùn)練 epoch 結(jié)束時輸出訓(xùn)練和測試的損失。在運行結(jié)束后,輸出該模型對測試數(shù)據(jù)集的最終 RMSE。我們可以看到,該模型取得了不錯的 RMSE——3.836,這顯著低于用持久模型(persistence model)得到的 RMSE(30)。

總結(jié)

在本教程中,您學(xué)會了如何將 LSTM 應(yīng)用于多變量時間序列預(yù)測問題。

具體點講,你學(xué)會了:

  • 如何將原始數(shù)據(jù)集轉(zhuǎn)換成適用于時間序列預(yù)測的數(shù)據(jù)集
  • 如何處理數(shù)據(jù)并使其適應(yīng)用于多變量時間序列預(yù)測問題的 LSTM 模型。
  • 如何做出預(yù)測并將結(jié)果重新調(diào)整到初始單元。

原文:https://machinelearningmastery.com/multivariate-time-series-forecasting-lstms-keras/

【本文是專欄機構(gòu)“機器之心”的原創(chuàng)譯文,微信公眾號“機器之心( id: almosthuman2014)”】


分享標題:基于Keras的LSTM多變量時間序列預(yù)測
文章轉(zhuǎn)載:http://uogjgqi.cn/article/cceopcc.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流