PYTHON用KERAS的LSTM神經(jīng)網(wǎng)絡進行時間序列預測天然氣價格例子|附代碼數(shù)據(jù)
全文下載鏈接:http://tecdat.cn?p=26519
最近我們被客戶要求撰寫關于LSTM的研究報告,包括一些圖形和統(tǒng)計輸出。
一個簡單的編碼器-解碼器LSTM神經(jīng)網(wǎng)絡應用于時間序列預測問題:預測天然氣價格,預測范圍為 10 天?!斑M入”時間步長也設置為 10 天。) 只需要 10 天來推斷接下來的 10 天??梢允褂?10 天的歷史數(shù)據(jù)集以在線學習的方式重新訓練網(wǎng)絡?(?點擊文末“閱讀原文”獲取完整代碼數(shù)據(jù)********?)?。
數(shù)據(jù)集是天然氣價格?(?查看文末了解數(shù)據(jù)獲取方式?)?,具有以下特征:
日期(從 1997 年到 2020 年)- 為 每天數(shù)據(jù)
以元計的天然氣價格
相關視頻:LSTM神經(jīng)網(wǎng)絡架構和工作原理及其在Python中的預測應用
**
拓端數(shù)據(jù)部落
,贊9
讀取數(shù)據(jù)并將日期作為索引處理
#?固定日期時間并設置為索引dftet.index?=?pd.DatetimeIndex#?用NaN來填補缺失的日期(以后再補)dargt?=?f_arget.reindex(ales,?fill_value=np.nan)#?檢查print(d_tret.dtypes)df_aget.head(10)
處理缺失的日期
#?數(shù)據(jù)歸納(使用?"向前填充"--根據(jù)之前的值進行填充)。dfaet.fillna(method='ffill',?inplace=True)
特征工程
因為我們正在使用深度學習,所以特征工程將是最小的。
One-hot 編碼“is_weekend”和星期幾
添加行的最小值和最大值(可選)
通過設置固定的上限(例如 30 倍中位數(shù))修復異常高的值
#?在df_agg中修復任何非常高的值?-?歸一化為中值for?col?in?co_to_fi_ies:????dgt[col]?=?fixnaes(dftget[col])
添加滯后
#?增加每周的滯后性df_tret?=?addag(d_aget,?tare_arble='Price',?step_ak=7)#?增加30天的滯后性df_get?=?ad_ag(df_ret,?tagt_able='Price',?sep_bck=30)
#?合并后刪除任何有NA值的列d_gt.dropna(inplace=True)print(dfget.shape)tie_nx?=?df_art.index
歸一化
歸一化或最小-最大尺度(需要減小較寬的數(shù)值范圍,以便 LSTM 收斂)。
#?標準化訓練數(shù)據(jù)[0,?1]sclr?=?prcsing.Maxcaer((0,1))
準備訓練數(shù)據(jù)集
時間步數(shù) = 1
時間步數(shù) = nsteout小時數(shù)(預測范圍)
在這里,我們將數(shù)據(jù)集從 [samples, features] 轉換為 [samples, steps, features] - 與算法 LSTM 一起使用的維度。下面的序列拆分使用“walk-forward”方法來創(chuàng)建訓練數(shù)據(jù)集。
#?多變量多步驟編碼器-解碼器?lstm?示例#?選擇一個時間步驟的數(shù)量#?維度變成[樣本數(shù)、步驟、特征]X,?y?=?splices(datasformed,?n_ep_in,?n_ep_out)#?分成訓練/測試et_ut?=?int(0.05*X.shpe[0])?X_tain,?X_est,?ytrain,?y_tst?=?X[:-tetaont],?X[-tes_ont:],?y[:-tstmunt],?y[-es_unt:]
訓練模型
這利用了長期短期記憶算法。
#?實例化和訓練模型printmodel?=?cre_odel(n_tps_in,?n_tep_out,?n_feures,?lerig_rate=0.0001)
探索預測
%%time#加載特定的模型model?=?lod_id_del(???????????????????????????n_stepin,????????????????????????????n_sep_out,????????????????????????????X_tan.shape[2])
#?展示對一個樣本的預測testle_ix?=?0yat?=?mdel.predict(X_tet[est_amle_ix].reshape((1,n_sep_in,?nfatues)),erbose=Tue)
#?計算這一個測試樣本的均方根誤差rmse?=?math.sqrt
plot_result(yhat[0],?scaler,?saved_columns)
點擊標題查閱往期內容
Python對商店數(shù)據(jù)進行l(wèi)stm和xgboost銷售量時間序列建模預測分析
左右滑動查看更多
01
02
03
04
平均 RMSE
#?收集所有的測試RMSE值rmesores?=?[]for?i?in?range:????yhat?=?oel.predict(Xtet[i].reshape((1,?_stes_in,?_faues)),?verbose=False)????#?計算這一個測試樣本的均方根誤差????rmse?=?math.sqrt(mensqaerror(yhat[0],?y_test[i]))
訓練整個數(shù)據(jù)集
#在所有數(shù)據(jù)上實例化和訓練模型modl_l?=?cret_mel(nsep_in,?steps_ou,?n_etures,learnnrate=0.0001)mde_all,?ru_ime,?weighfie?=?trin(md_all,?X,?y,?batcsie=16,?neohs=15)
樣本內預測
注意:模型已經(jīng)“看到”或訓練了這些樣本,但我們希望確保它與預測一致。如果它做得不好,模型可能會欠擬合或過擬合。要嘗試的事情:
增加或減少批量大小
增加或減少學習率
更改網(wǎng)絡中 LSTM 的隱藏層數(shù)
#?獲得10個步da_cent?=?dfret.iloc[-(ntes_in*2):-nsps_in]#?標準化dta_ectormed?=?sclr.rasfrm(daareent)#?維度變成[樣本數(shù)、步驟、特征]n_res?=?dtcentorm.shape[1]X_st?=?data_recn_trsrd.reshape((1,?n_tps_n,?n_feares))#?預測foecst?=?mlll.predict(X_past)#?擴大規(guī)模并轉換為DFforcast?=?forast.resape(n_eaturs))foect?=?saer.inese_transform(forecast)fuure_dtes??df_targe.ide[-n_steps_out:]?#?繪圖histrcl?=?d_aet.ioc[-100:,?:1]?#?獲得歷史數(shù)據(jù)的X步回溯for?i?in?ane(oisae[1]):????fig?=?plt.igre(fgze=(10,5))????????#?繪制df_agg歷史數(shù)據(jù)????plt.plot(.iloc[:,i]????????#?繪制預測圖????plt.plot(frc.iloc[:,i])????#?標簽和圖例????plt.xlabel
預測樣本外
#?獲取最后10步dtareent?=?dfargt.iloc[-nstpsin:]。#?標準化dta_ecntranfomed?=?scaler.trasorm(data_recent)#?預測forct?=?meall.rict(_past)#?擴大規(guī)模并轉換為DFforeast?=?foecs.eshape(_seps_ut,?n_eatures))foreast?=?sclerinvers_tranorm(focast)futur_daes?=?pd.daternge(df_argetinex[-1],?priods=step_out,?freq='D')#?繪圖htrical?=?df_taet.iloc[-100:,?:1]?#?獲得歷史數(shù)據(jù)的X步回溯#?繪制預測圖????plt.plot(fectoc[:,i])
點擊文末?“閱讀原文”
獲取全文完整資料。
本文選自《PYTHON用KERAS的LSTM神經(jīng)網(wǎng)絡進行時間序列預測天然氣價格例子》。
點擊標題查閱往期內容
Python對商店數(shù)據(jù)進行l(wèi)stm和xgboost銷售量時間序列建模預測分析
Matlab用深度學習長短期記憶(LSTM)神經(jīng)網(wǎng)絡對文本數(shù)據(jù)進行分類
RNN循環(huán)神經(jīng)網(wǎng)絡 、LSTM長短期記憶網(wǎng)絡實現(xiàn)時間序列長期利率預測
結合新冠疫情COVID-19股票價格預測:ARIMA,KNN和神經(jīng)網(wǎng)絡時間序列分析
深度學習:Keras使用神經(jīng)網(wǎng)絡進行簡單文本分類分析新聞組數(shù)據(jù)
用PyTorch機器學習神經(jīng)網(wǎng)絡分類預測銀行客戶流失模型
PYTHON用LSTM長短期記憶神經(jīng)網(wǎng)絡的參數(shù)優(yōu)化方法預測時間序列洗發(fā)水銷售數(shù)據(jù)
Python用Keras神經(jīng)網(wǎng)絡序列模型回歸擬合預測、準確度檢查和結果可視化
Python用LSTM長短期記憶神經(jīng)網(wǎng)絡對不穩(wěn)定降雨量時間序列進行預測分析
R語言中的神經(jīng)網(wǎng)絡預測時間序列:多層感知器(MLP)和極限學習機(ELM)數(shù)據(jù)分析報告
R語言深度學習:用keras神經(jīng)網(wǎng)絡回歸模型預測時間序列數(shù)據(jù)
Matlab用深度學習長短期記憶(LSTM)神經(jīng)網(wǎng)絡對文本數(shù)據(jù)進行分類
R語言KERAS深度學習CNN卷積神經(jīng)網(wǎng)絡分類識別手寫數(shù)字圖像數(shù)據(jù)(MNIST)
MATLAB中用BP神經(jīng)網(wǎng)絡預測人體脂肪百分比數(shù)據(jù)
Python中用PyTorch機器學習神經(jīng)網(wǎng)絡分類預測銀行客戶流失模型
R語言實現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡)模型進行回歸數(shù)據(jù)分析
SAS使用鳶尾花(iris)數(shù)據(jù)集訓練人工神經(jīng)網(wǎng)絡(ANN)模型
【視頻】R語言實現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡)模型進行回歸數(shù)據(jù)分析
Python使用神經(jīng)網(wǎng)絡進行簡單文本分類
R語言用神經(jīng)網(wǎng)絡改進Nelson-Siegel模型擬合收益率曲線分析
R語言基于遞歸神經(jīng)網(wǎng)絡RNN的溫度時間序列預測
R語言神經(jīng)網(wǎng)絡模型預測車輛數(shù)量時間序列
R語言中的BP神經(jīng)網(wǎng)絡模型分析學生成績
matlab使用長短期記憶(LSTM)神經(jīng)網(wǎng)絡對序列數(shù)據(jù)進行分類
R語言實現(xiàn)擬合神經(jīng)網(wǎng)絡預測和結果可視化
用R語言實現(xiàn)神經(jīng)網(wǎng)絡預測股票實例
使用PYTHON中KERAS的LSTM遞歸神經(jīng)網(wǎng)絡進行時間序列預測
python用于NLP的seq2seq模型實例:用Keras實現(xiàn)神經(jīng)網(wǎng)絡機器翻譯
用于NLP的Python:使用Keras的多標簽文本LSTM神經(jīng)網(wǎng)絡分類
全文下載鏈接:http://tecdat.cn?p=26519
最近我們被客戶要求撰寫關于LSTM的研究報告,包括一些圖形和統(tǒng)計輸出。
一個簡單的編碼器-解碼器LSTM神經(jīng)網(wǎng)絡應用于時間序列預測問題:預測天然氣價格,預測范圍為 10 天?!斑M入”時間步長也設置為 10 天。) 只需要 10 天來推斷接下來的 10 天。可以使用 10 天的歷史數(shù)據(jù)集以在線學習的方式重新訓練網(wǎng)絡?(?點擊文末“閱讀原文”獲取完整代碼數(shù)據(jù)********?)?。
數(shù)據(jù)集是天然氣價格?(?查看文末了解數(shù)據(jù)獲取方式?)?,具有以下特征:
日期(從 1997 年到 2020 年)- 為 每天數(shù)據(jù)
以元計的天然氣價格
相關視頻:LSTM神經(jīng)網(wǎng)絡架構和工作原理及其在Python中的預測應用
**
拓端數(shù)據(jù)部落
,贊9
讀取數(shù)據(jù)并將日期作為索引處理
#?固定日期時間并設置為索引dftet.index?=?pd.DatetimeIndex#?用NaN來填補缺失的日期(以后再補)dargt?=?f_arget.reindex(ales,?fill_value=np.nan)#?檢查print(d_tret.dtypes)df_aget.head(10)
處理缺失的日期
#?數(shù)據(jù)歸納(使用?"向前填充"--根據(jù)之前的值進行填充)。dfaet.fillna(method='ffill',?inplace=True)
特征工程
因為我們正在使用深度學習,所以特征工程將是最小的。
One-hot 編碼“is_weekend”和星期幾
添加行的最小值和最大值(可選)
通過設置固定的上限(例如 30 倍中位數(shù))修復異常高的值
#?在df_agg中修復任何非常高的值?-?歸一化為中值for?col?in?co_to_fi_ies:????dgt[col]?=?fixnaes(dftget[col])
添加滯后
#?增加每周的滯后性df_tret?=?addag(d_aget,?tare_arble='Price',?step_ak=7)#?增加30天的滯后性df_get?=?ad_ag(df_ret,?tagt_able='Price',?sep_bck=30)
#?合并后刪除任何有NA值的列d_gt.dropna(inplace=True)print(dfget.shape)tie_nx?=?df_art.index
歸一化
歸一化或最小-最大尺度(需要減小較寬的數(shù)值范圍,以便 LSTM 收斂)。
#?標準化訓練數(shù)據(jù)[0,?1]sclr?=?prcsing.Maxcaer((0,1))
準備訓練數(shù)據(jù)集
時間步數(shù) = 1
時間步數(shù) = nsteout小時數(shù)(預測范圍)
在這里,我們將數(shù)據(jù)集從 [samples, features] 轉換為 [samples, steps, features] - 與算法 LSTM 一起使用的維度。下面的序列拆分使用“walk-forward”方法來創(chuàng)建訓練數(shù)據(jù)集。
#?多變量多步驟編碼器-解碼器?lstm?示例#?選擇一個時間步驟的數(shù)量#?維度變成[樣本數(shù)、步驟、特征]X,?y?=?splices(datasformed,?n_ep_in,?n_ep_out)#?分成訓練/測試et_ut?=?int(0.05*X.shpe[0])?X_tain,?X_est,?ytrain,?y_tst?=?X[:-tetaont],?X[-tes_ont:],?y[:-tstmunt],?y[-es_unt:]
訓練模型
這利用了長期短期記憶算法。
#?實例化和訓練模型printmodel?=?cre_odel(n_tps_in,?n_tep_out,?n_feures,?lerig_rate=0.0001)
探索預測
%%time#加載特定的模型model?=?lod_id_del(???????????????????????????n_stepin,????????????????????????????n_sep_out,????????????????????????????X_tan.shape[2])
#?展示對一個樣本的預測testle_ix?=?0yat?=?mdel.predict(X_tet[est_amle_ix].reshape((1,n_sep_in,?nfatues)),erbose=Tue)
#?計算這一個測試樣本的均方根誤差rmse?=?math.sqrt
plot_result(yhat[0],?scaler,?saved_columns)
點擊標題查閱往期內容
Python對商店數(shù)據(jù)進行l(wèi)stm和xgboost銷售量時間序列建模預測分析
左右滑動查看更多
01
02
03
04
平均 RMSE
#?收集所有的測試RMSE值rmesores?=?[]for?i?in?range:????yhat?=?oel.predict(Xtet[i].reshape((1,?_stes_in,?_faues)),?verbose=False)????#?計算這一個測試樣本的均方根誤差????rmse?=?math.sqrt(mensqaerror(yhat[0],?y_test[i]))
訓練整個數(shù)據(jù)集
#在所有數(shù)據(jù)上實例化和訓練模型modl_l?=?cret_mel(nsep_in,?steps_ou,?n_etures,learnnrate=0.0001)mde_all,?ru_ime,?weighfie?=?trin(md_all,?X,?y,?batcsie=16,?neohs=15)
樣本內預測
注意:模型已經(jīng)“看到”或訓練了這些樣本,但我們希望確保它與預測一致。如果它做得不好,模型可能會欠擬合或過擬合。要嘗試的事情:
增加或減少批量大小
增加或減少學習率
更改網(wǎng)絡中 LSTM 的隱藏層數(shù)
#?獲得10個步da_cent?=?dfret.iloc[-(ntes_in*2):-nsps_in]#?標準化dta_ectormed?=?sclr.rasfrm(daareent)#?維度變成[樣本數(shù)、步驟、特征]n_res?=?dtcentorm.shape[1]X_st?=?data_recn_trsrd.reshape((1,?n_tps_n,?n_feares))#?預測foecst?=?mlll.predict(X_past)#?擴大規(guī)模并轉換為DFforcast?=?forast.resape(n_eaturs))foect?=?saer.inese_transform(forecast)fuure_dtes??df_targe.ide[-n_steps_out:]?#?繪圖histrcl?=?d_aet.ioc[-100:,?:1]?#?獲得歷史數(shù)據(jù)的X步回溯for?i?in?ane(oisae[1]):????fig?=?plt.igre(fgze=(10,5))????????#?繪制df_agg歷史數(shù)據(jù)????plt.plot(.iloc[:,i]????????#?繪制預測圖????plt.plot(frc.iloc[:,i])????#?標簽和圖例????plt.xlabel
預測樣本外
#?獲取最后10步dtareent?=?dfargt.iloc[-nstpsin:]。#?標準化dta_ecntranfomed?=?scaler.trasorm(data_recent)#?預測forct?=?meall.rict(_past)#?擴大規(guī)模并轉換為DFforeast?=?foecs.eshape(_seps_ut,?n_eatures))foreast?=?sclerinvers_tranorm(focast)futur_daes?=?pd.daternge(df_argetinex[-1],?priods=step_out,?freq='D')#?繪圖htrical?=?df_taet.iloc[-100:,?:1]?#?獲得歷史數(shù)據(jù)的X步回溯#?繪制預測圖????plt.plot(fectoc[:,i])
點擊文末?“閱讀原文”
獲取全文完整資料。
本文選自《PYTHON用KERAS的LSTM神經(jīng)網(wǎng)絡進行時間序列預測天然氣價格例子》。
點擊標題查閱往期內容
Python對商店數(shù)據(jù)進行l(wèi)stm和xgboost銷售量時間序列建模預測分析
Matlab用深度學習長短期記憶(LSTM)神經(jīng)網(wǎng)絡對文本數(shù)據(jù)進行分類
RNN循環(huán)神經(jīng)網(wǎng)絡 、LSTM長短期記憶網(wǎng)絡實現(xiàn)時間序列長期利率預測
結合新冠疫情COVID-19股票價格預測:ARIMA,KNN和神經(jīng)網(wǎng)絡時間序列分析
深度學習:Keras使用神經(jīng)網(wǎng)絡進行簡單文本分類分析新聞組數(shù)據(jù)
用PyTorch機器學習神經(jīng)網(wǎng)絡分類預測銀行客戶流失模型
PYTHON用LSTM長短期記憶神經(jīng)網(wǎng)絡的參數(shù)優(yōu)化方法預測時間序列洗發(fā)水銷售數(shù)據(jù)
Python用Keras神經(jīng)網(wǎng)絡序列模型回歸擬合預測、準確度檢查和結果可視化
Python用LSTM長短期記憶神經(jīng)網(wǎng)絡對不穩(wěn)定降雨量時間序列進行預測分析
R語言中的神經(jīng)網(wǎng)絡預測時間序列:多層感知器(MLP)和極限學習機(ELM)數(shù)據(jù)分析報告
R語言深度學習:用keras神經(jīng)網(wǎng)絡回歸模型預測時間序列數(shù)據(jù)
Matlab用深度學習長短期記憶(LSTM)神經(jīng)網(wǎng)絡對文本數(shù)據(jù)進行分類
R語言KERAS深度學習CNN卷積神經(jīng)網(wǎng)絡分類識別手寫數(shù)字圖像數(shù)據(jù)(MNIST)
MATLAB中用BP神經(jīng)網(wǎng)絡預測人體脂肪百分比數(shù)據(jù)
Python中用PyTorch機器學習神經(jīng)網(wǎng)絡分類預測銀行客戶流失模型
R語言實現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡)模型進行回歸數(shù)據(jù)分析
SAS使用鳶尾花(iris)數(shù)據(jù)集訓練人工神經(jīng)網(wǎng)絡(ANN)模型
【視頻】R語言實現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡)模型進行回歸數(shù)據(jù)分析
Python使用神經(jīng)網(wǎng)絡進行簡單文本分類
R語言用神經(jīng)網(wǎng)絡改進Nelson-Siegel模型擬合收益率曲線分析
R語言基于遞歸神經(jīng)網(wǎng)絡RNN的溫度時間序列預測
R語言神經(jīng)網(wǎng)絡模型預測車輛數(shù)量時間序列
R語言中的BP神經(jīng)網(wǎng)絡模型分析學生成績
matlab使用長短期記憶(LSTM)神經(jīng)網(wǎng)絡對序列數(shù)據(jù)進行分類
R語言實現(xiàn)擬合神經(jīng)網(wǎng)絡預測和結果可視化
用R語言實現(xiàn)神經(jīng)網(wǎng)絡預測股票實例
使用PYTHON中KERAS的LSTM遞歸神經(jīng)網(wǎng)絡進行時間序列預測
python用于NLP的seq2seq模型實例:用Keras實現(xiàn)神經(jīng)網(wǎng)絡機器翻譯
用于NLP的Python:使用Keras的多標簽文本LSTM神經(jīng)網(wǎng)絡分類