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

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

Python中利用長(zhǎng)短期記憶模型LSTM進(jìn)行時(shí)間序列預(yù)測(cè)分析

2020-11-06 16:46 作者:拓端tecdat  | 我要投稿

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

此示例中,神經(jīng)網(wǎng)絡(luò)用于使用2011年4月至2013年2月期間的數(shù)據(jù)預(yù)測(cè)都柏林市議會(huì)公民辦公室的能源消耗。

?每日數(shù)據(jù)是通過(guò)總計(jì)每天提供的15分鐘間隔的消耗量來(lái)創(chuàng)建的。

LSTM簡(jiǎn)介

LSTM(或長(zhǎng)期短期存儲(chǔ)器網(wǎng)絡(luò))允許分析具有長(zhǎng)期依賴(lài)性的順序或有序數(shù)據(jù)。當(dāng)涉及到這項(xiàng)任務(wù)時(shí),傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)不足,在這方面,LSTM將用于預(yù)測(cè)這種情況下的電力消耗模式。

與ARIMA等模型相比,LSTM的一個(gè)特殊優(yōu)勢(shì)是數(shù)據(jù)不一定需要是固定的(常數(shù)均值,方差和自相關(guān)),以便LSTM對(duì)其進(jìn)行分析 - 即使這樣做可能會(huì)導(dǎo)致性能提升。

自相關(guān)圖,Dickey-Fuller測(cè)試和對(duì)數(shù)變換

為了確定我們的模型中是否存在平穩(wěn)性

  1. 生成自相關(guān)和部分自相關(guān)圖

  2. 進(jìn)行Dickey-Fuller測(cè)試

  3. 對(duì)時(shí)間序列進(jìn)行對(duì)數(shù)變換,并再次運(yùn)行上述兩個(gè)過(guò)程,以確定平穩(wěn)性的變化(如果有的話(huà))

首先,這是時(shí)間序列圖:

每天消耗lstm千瓦

據(jù)觀察,波動(dòng)性(或消費(fèi)從一天到下一天的變化)非常高。在這方面,對(duì)數(shù)變換可以用于嘗試稍微平滑該數(shù)據(jù)。在此之前,生成ACF和PACF圖,并進(jìn)行Dickey-Fuller測(cè)試。

自相關(guān)圖

?

部分自相關(guān)圖

?

自相關(guān)和部分自相關(guān)圖都表現(xiàn)出顯著的波動(dòng)性,這意味著時(shí)間序列中的幾個(gè)區(qū)間存在相關(guān)性。

運(yùn)行Dickey-Fuller測(cè)試時(shí),會(huì)產(chǎn)生以下結(jié)果:

?當(dāng)p值高于0.05時(shí),不能拒絕非平穩(wěn)性的零假設(shè)。


  1. STD1

  2. 954.7248

  3. 4043.4302

  4. 0.23611754

變異系數(shù)(或平均值除以標(biāo)準(zhǔn)差)為0.236,表明該系列具有顯著的波動(dòng)性。

現(xiàn)在,數(shù)據(jù)被轉(zhuǎn)換為對(duì)數(shù)格式。

雖然時(shí)間序列仍然不穩(wěn)定,但當(dāng)以對(duì)數(shù)格式表示時(shí),偏差的大小略有下降:

每天消耗的千瓦數(shù)對(duì)數(shù)格式

此外,變異系數(shù)已顯著下降至0.0319,這意味著與平均值相關(guān)的趨勢(shì)的可變性顯著低于先前。

  1. STD2 = np.std(數(shù)據(jù)集)

  2. mean2 = np.mean(數(shù)據(jù)集)

  3. CV2 = std2 / mean2 #Cafficient of Variation

  1. std2

  2. 0.26462445

  1. mean2

  2. 8.272395

  1. CV2

  2. 0.031988855

同樣,在對(duì)數(shù)數(shù)據(jù)上生成ACF和PACF圖,并再次進(jìn)行Dickey-Fuller測(cè)試。

自相關(guān)圖

與log的自相關(guān)

偏自相關(guān)圖

部分自相關(guān)函數(shù)日志

Dickey-Fuller測(cè)試

  1. ... print('\ t%s:%。3f'%(key,value))

  2. 1%:-3.440

  3. 5%: - ?2.866

  4. 10%: - ?2.569

Dickey-Fuller檢驗(yàn)的p值降至0.0576。雖然這在技術(shù)上沒(méi)有輸入拒絕零假設(shè)所需的5%顯著性閾值,但對(duì)數(shù)時(shí)間序列已顯示基于CV度量的較低波動(dòng)率,因此該時(shí)間序列用于LSTM的預(yù)測(cè)目的。

LSTM的時(shí)間序列分析

現(xiàn)在,LSTM模型本身用于預(yù)測(cè)目的。

數(shù)據(jù)處理

首先,導(dǎo)入相關(guān)庫(kù)并執(zhí)行數(shù)據(jù)處理

LSTM生成和預(yù)測(cè)

模型訓(xùn)練超過(guò)100個(gè)時(shí)期,并生成預(yù)測(cè)。

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

  2. model = Sequential()

  3. model.add(LSTM(4,input_shape =(1,previous)))

  4. model.fit(X_train,Y_train,epochs = 100,batch_size = 1,verbose = 2)


  5. #生成預(yù)測(cè)

  6. trainpred = model.predict(X_train)


  7. #將預(yù)測(cè)轉(zhuǎn)換回正常值

  8. trainpred = scaler.inverse_transform(trainpred)


  9. #calculate RMSE

  10. trainScore = math.sqrt(mean_squared_error(Y_train [0],trainpred [:,0]))


  11. #訓(xùn)練預(yù)測(cè)

  12. trainpredPlot = np.empty_like(dataset)


  13. #測(cè)試預(yù)測(cè)


  14. #繪制所有預(yù)測(cè)

  15. inversetransform,= plt.plot(scaler.inverse_transform(dataset))

準(zhǔn)確性

該模型顯示訓(xùn)練數(shù)據(jù)集的均方根誤差為0.24,測(cè)試數(shù)據(jù)集的均方根誤差為0.23。平均千瓦消耗量(以對(duì)數(shù)格式表示)為8.27,這意味著0.23的誤差小于平均消耗量的3%。

以下是預(yù)測(cè)消費(fèi)與實(shí)際消費(fèi)量的關(guān)系圖:

預(yù)測(cè)與實(shí)際消費(fèi)1天

有趣的是,當(dāng)在原始數(shù)據(jù)上生成預(yù)測(cè)(未轉(zhuǎn)換為對(duì)數(shù)格式)時(shí),會(huì)產(chǎn)生以下訓(xùn)練和測(cè)試錯(cuò)誤:

?在每天平均消耗4043千瓦的情況下,測(cè)試分?jǐn)?shù)的均方誤差占總?cè)站牧康慕?0%,并且與對(duì)數(shù)數(shù)據(jù)產(chǎn)生的相比非常高。

也就是說(shuō),重要的是要記住,使用1天的先前數(shù)據(jù)進(jìn)行預(yù)測(cè),即Y表示時(shí)間t的消耗,而X表示時(shí)間t-1的消耗,由代碼中的前一個(gè)變量設(shè)置先前。讓我們來(lái)看看這增加到個(gè)究竟1050天。

10天

10天

50天

50天

我們可以看到測(cè)試誤差在10天和50天期間顯著降低,并且考慮到LSTM模型在預(yù)測(cè)時(shí)考慮了更多的歷史數(shù)據(jù),消耗的波動(dòng)性得到了更好的捕獲。

鑒于數(shù)據(jù)是對(duì)數(shù)格式,現(xiàn)在可以通過(guò)獲得數(shù)據(jù)的指數(shù)來(lái)獲得預(yù)測(cè)的真實(shí)值。

例如,testpred變量用(1,-1)重新整形:

  1. testpred.reshape(1,-1)

  2. array([[7.7722197,8.277015,8.458941,8.455311,8.447589,8.445035,

  3. ......

  4. 8.425287,8.404881,8.457063,8.423954,7.98714,7.9003944,

  5. 8.240862,8.41654,8.423854,8.437414,8.397851,7.9047146]],

  6. dtype = float32)

結(jié)論

對(duì)于這個(gè)例子,LSTM被證明在預(yù)測(cè)電力消耗波動(dòng)方面非常準(zhǔn)確。此外,以對(duì)數(shù)格式表示時(shí)間序列允許平滑數(shù)據(jù)的波動(dòng)性并提高LSTM的預(yù)測(cè)準(zhǔn)確度。

?

參考文獻(xiàn)

1.在python中使用lstm和pytorch進(jìn)行時(shí)間序列預(yù)測(cè)

?

2.python中利用長(zhǎng)短期記憶模型lstm進(jìn)行時(shí)間序列預(yù)測(cè)分析

?

3.使用r語(yǔ)言進(jìn)行時(shí)間序列(arima,指數(shù)平滑)分析

?

4.r語(yǔ)言多元copula-garch-模型時(shí)間序列預(yù)測(cè)

?

5.r語(yǔ)言copulas和金融時(shí)間序列案例

?

6.使用r語(yǔ)言隨機(jī)波動(dòng)模型sv處理時(shí)間序列中的隨機(jī)波動(dòng)

?

7.r語(yǔ)言時(shí)間序列tar閾值自回歸模型

?

8.r語(yǔ)言k-shape時(shí)間序列聚類(lèi)方法對(duì)股票價(jià)格時(shí)間序列聚類(lèi)

?

9.python3用arima模型進(jìn)行時(shí)間序列預(yù)測(cè)

?


Python中利用長(zhǎng)短期記憶模型LSTM進(jìn)行時(shí)間序列預(yù)測(cè)分析的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
扶沟县| 左权县| 澜沧| 龙胜| 西城区| 晋州市| 敦化市| 永昌县| 于田县| 女性| 同德县| 新河县| 金阳县| 赫章县| 邢台县| 陆川县| 益阳市| 应城市| 榆中县| 和硕县| 孝义市| 竹山县| 九江市| 巴彦县| 长沙市| 海原县| 丰城市| 双辽市| 祁东县| 蒲江县| 东城区| 扶沟县| 固原市| 西乌珠穆沁旗| 襄樊市| 东兰县| 田林县| 临武县| 汉中市| 江北区| 尼勒克县|