日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lstm单变量预测

發(fā)布時間:2023/12/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lstm单变量预测 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
############導(dǎo)入必要的庫######### import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import MinMaxScaler from keras.models import Sequential from keras.layers import Dense, LSTM, Dropout, GRU from keras.optimizers import SGD在這里插入代碼片

數(shù)據(jù)的加載

## 將date這一列設(shè)為索引 dataset = pd.read_csv("datasets_8388_11883_IBM_2006-01-01_to_2018-01-01.csv", index_col='Date', parse_dates=['Date']) dataset.head() #顯示的是前10列 dataset.shape #獲取的是數(shù)據(jù)集的維度 >>(3020, 6) # 檢查數(shù)據(jù)是否有缺失值 # 獲取了其中的一列當(dāng)做訓(xùn)練集與測試集 train_set = dataset[:'2016'].iloc[:, 1:2].values # 訓(xùn)練集,獲取到第一列的數(shù)據(jù) test_set = dataset['2017':].iloc[:,1:2].values # 測試集,獲取到第一列的數(shù)據(jù) train_set.shape >>(2769, 1) test_set.shape >>(251, 1)

定義顯示函數(shù)

def plot_predictions(test_result, predict_restult):"""test_result: 真實(shí)值predict_result: 預(yù)測值"""plt.plot(test_result, color='red', label='IBM True Stock Price')plt.plot(predict_restult, color='blue', label="IMB prdicted Stock Price")plt.title("IBM Stock Price")plt.xlabel("Time")plt.ylabel("Stock Price")plt.legend() # 給圖加上圖例plt.show()

繪制測試集與訓(xùn)練集的數(shù)目

dataset['High'][:"2016"].plot(figsize=(16, 4), legend=True) dataset['High']["2017":].plot(figsize=(16, 4), legend=True) plt.title("IBM Stock Price") plt.legend(['Train set(before 2016)', 'Test set(after 2017)']) plt.show()

如何制作數(shù)據(jù)將數(shù)據(jù)喂到模型里

# 正則化:將每一維的特征映射到指定的區(qū)間:【0,1】 sc = MinMaxScaler(feature_range=[0, 1]) train_set_scaled = sc.fit_transform(train_set) # 創(chuàng)建序列數(shù)據(jù)集(訓(xùn)練和測試) # 這個代碼的意思就是制作一個時間序列的預(yù)處理 # 60個時間步為一個樣本,1個輸出 X_train = [] ##這里是列表 y_train = [] for i in range(60, 2769):X_train.append(train_set_scaled[i-60:i, 0]) y_train.append(train_set_scaled[i, 0])X_train, y_train = np.array(X_train), np.array(y_train) # numpy類型變換 X_train.shape >>>(2709, 60) X_train[0] >>>array([0.06065089, 0.06029868, 0.06311637, 0.0781206 , 0.07262609,0.07171034, 0.07657087, 0.07058326, 0.0669907 , 0.06494787,0.075796 , 0.07361229, 0.06417301, 0.05621302, 0.05783319,0.05409975, 0.05431107, 0.05515638, 0.05543815, 0.05677656,0.05846717, 0.05388842, 0.04811214, 0.04233587, 0.04402649,0.0490279 , 0.04832347, 0.05297267, 0.05614258, 0.05290223,0.05325444, 0.04909834, 0.04994365, 0.04797126, 0.05431107,0.05212736, 0.04726684, 0.04895745, 0.04656241, 0.04839391,0.04416737, 0.0485348 , 0.04719639, 0.04825303, 0.05395886,0.05663567, 0.05853762, 0.05959425, 0.06375035, 0.06917442,0.06889265, 0.06670893, 0.06910397, 0.07783883, 0.07565511,0.07276698, 0.06889265, 0.0656523 , 0.06656805, 0.06769513]) ### lstm的輸入模塊 # LSTM的輸入:(samples, sequence_length, features) # reshape: 訓(xùn)練集(2709,60) ---> (2709, 60, 1) X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1)) X_train.shape >>> (2709, 60, 1)

構(gòu)建lstm網(wǎng)絡(luò)

model = Sequential() # LSTM 第一層 ##輸入的是步數(shù)與維度 model.add(LSTM(128, return_sequences=True, input_shape=(X_train.shape[1], 1))) model.add(Dropout(0.2))# LSTM 第二層 model.add(LSTM(128, return_sequences=True)) model.add(Dropout(0.2))# LSTM 第三層 model.add(LSTM(128)) model.add(Dropout(0.2))# Dense層 model.add(Dense(units=1)) # 模型編譯 model.compile(optimizer='rmsprop', loss='mse') # 模型訓(xùn)練 model.fit(X_train, y_train, epochs=20, batch_size=32) >>>Output exceeds the size limit. Open the full output data in a text editor Epoch 1/20 85/85 [==============================] - 30s 357ms/step - loss: 0.0666 Epoch 2/20 85/85 [==============================] - 32s 372ms/step - loss: 0.0124 Epoch 3/20 85/85 [==============================] - 31s 370ms/step - loss: 0.0080 Epoch 4/20 85/85 [==============================] - 34s 399ms/step - loss: 0.0063 Epoch 5/20 85/85 [==============================] - 45s 527ms/step - loss: 0.0055 Epoch 6/20 85/85 [==============================] - 45s 532ms/step - loss: 0.0048 Epoch 7/20 85/85 [==============================] - 46s 543ms/step - loss: 0.0039 Epoch 8/20 85/85 [==============================] - 45s 530ms/step - loss: 0.0039 Epoch 9/20 85/85 [==============================] - 47s 551ms/step - loss: 0.0034 Epoch 10/20 85/85 [==============================] - 49s 582ms/step - loss: 0.0032 Epoch 11/20 85/85 [==============================] - 49s 571ms/step - loss: 0.0029 Epoch 12/20 85/85 [==============================] - 48s 563ms/step - loss: 0.0026 Epoch 13/20 ... Epoch 19/20 85/85 [==============================] - 39s 460ms/step - loss: 0.0019 Epoch 20/20 85/85 [==============================] - 30s 351ms/step - loss: 0.0018 <tensorflow.python.keras.callbacks.History at 0x13f4a7ac8>

構(gòu)建數(shù)據(jù)集,進(jìn)行預(yù)測

dataset_total = pd.concat((dataset['High'][:"2016"], dataset['High']["2017":]), axis=0) dataset_total.shape >>>(3020,) dataset_total >>>Date 2006-01-03 82.55 2006-01-04 82.50 2006-01-05 82.90 2006-01-06 85.03 2006-01-09 84.25... 2017-12-22 153.00 2017-12-26 153.86 2017-12-27 153.18 2017-12-28 154.12 2017-12-29 154.72 Name: High, Length: 3020, dtype: float64 inputs = dataset_total[len(train_set):].values #測試集 inputs = inputs.reshape(-1, 1) ###轉(zhuǎn)換成一列 inputs.shape >>>(251, 1) inputs_scaled = sc.fit_transform(inputs) #歸一化

構(gòu)建測試集

dataset_total = pd.concat((dataset['High'][:"2016"], dataset['High']["2017":]), axis=0) # 獲取輸入數(shù)據(jù) inputs = dataset_total[len(dataset_total) - len(test_set) - 60:].values inputs >>>Output exceeds the size limit. Open the full output data in a text editor array([157.43, 157.7 , 158.49, 156.95, 154.97, 154.22, 155.53, 155.89,151. , 152.45, 152.9 , 151.15, 151.52, 151.16, 152.94, 154.06,154.44, 154.33, 153.91, 153.34, 153.74, 153.64, 156.11, 155.93,155.56, 161.16, 161.34, 161.86, 159.15, 159.55, 159.93, 160.72,163. , 163. , 162.38, 163.19, 164.66, 164.41, 163.8 , 162.2 ,160.29, 161.15, 160.79, 165.18, 166. , 166.72, 166.79, 169.95,169.89, 169.85, 169.11, 167.26, 168.25, 167.94, 168.23, 167.49,167.98, 167.74, 166.99, 166.7 , 167.87, 169.87, 169.39, 169.92,169.8 , 168.09, 167.76, 168.01, 168.48, 168.18, 168.59, 167.45,170.64, 171.25, 176. , 179.25, 178.88, 179.2 , 177.07, 175.58,175.7 , 174.97, 176.34, 175.98, 178.62, 177.5 , 177.8 , 178.87,179.9 , 180.13, 181.92, 182.79, 181.57, 180.79, 181.34, 182.5 ,181.49, 181.25, 180.63, 182.55, 181.88, 181.32, 180.99, 181.29,180.95, 179.25, 179.49, 178.06, 176.82, 176.28, 179. , 176.79,176.18, 176.23, 175.06, 175.67, 175.5 , 174.16, 175. , 174.49,174.59, 174.95, 174.87, 174.96, 176.33, 173.47, 172.93, 172.56,171.23, 171.2 , 171.36, 171.3 , 171.69, 162.64, 162.4 , 162.11,161.57, 162.04, 161.1 , 160.48, 160.59, 160.42, 159.49, 159.45,159.14, 155.78, 153.47, 153.1 , 152.37, 151.15, 151.26, 151.83,153.99, 154.14, 151.33, 152.46, 152.84, 153.68, 152.76, 153.73,153. , 152.67, 152.8 , 152.87, 153.2 , 152.93, 152.89, 154.2 ,152.82, 154.26, 157.2 , 155.48, 154.94, 154.69, 155.42, 155.86,155.39, 155.79, 154.99, 154.68, 155.75, 155.34, 155.55, 155.74,154.5 , 156.02, 155.89, 153.83, 153.49, 153.89, 153.65, 154.24,154.19, 154.62, 153.88, 154.29, 150.25, 148.83, 147.87, 147.04, ...153.47, 151.82, 151.51, 151.79, 151.8 , 150.89, 149. , 148.97,148.7 , 149.65, 150.15, 151.95, 152.45, 152.39, 152.2 , 152.49,152.93, 153.61, 154.41, 155.02, 156.8 , 156.74, 156.22, 154.45,155.03, 155.89, 157.85, 156.73, 155.11, 153.8 , 154.18, 154.17,153.89, 153.46, 153. , 153.86, 153.18, 154.12, 154.72]) # 歸一化 inputs = inputs.reshape(-1, 1) inputs = sc.transform(inputs) inputs.shape >>>(311, 1) # 準(zhǔn)備測試集X_test,進(jìn)行股價預(yù)測 X_test = [] for i in range(60, 311):X_test.append(inputs[i-60:i, 0])X_test = np.array(X_test) # numpy 類型轉(zhuǎn)換X_test.shape >>>(251, 60) ###構(gòu)造數(shù)據(jù)集 X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1)) X_test.shape >>>(251, 60, 1) ###預(yù)測 predict_test = model.predict(X_test) # 預(yù)測 predict_test.shape >>>(251, 1) ###反歸一化 predict_stock_price = sc.inverse_transform(predict_test) predict_stock_price >>>([[168.57092],[168.69382],[169.65242],[170.35161],[170.84596],[171.02237],[170.4601 ],[169.75737],[169.38156],[169.46404],[169.58615],[169.80162],[169.56326],[170.3292 ],[171.34633],[173.63313],[176.39796],[178.01892],[178.7997 ],[178.39485],[177.41373],[176.70485],[176.20074],[176.44489],[176.7224 ], ...[154.5936 ],[154.30226],[154.3495 ],[154.2771 ],[154.49394]], dtype=float32)# 繪制測試結(jié)果和預(yù)測結(jié)果plot_predictions(test_set, predict_stock_price)

基于GRU

model_gru = Sequential() model_gru.add(GRU(50, return_sequences=True, input_shape=(X_train.shape[1], 1), activation='tanh')) model_gru.add(Dropout(0.2)) model_gru.add(GRU(50, activation='tanh')) model_gru.add(Dropout(0.2)) model_gru.add(Dense(1)) ###模型編譯 model_gru.compile(optimizer=SGD(lr=0.01, decay=1e-7, momentum=0.9), loss='mse' ###模型的訓(xùn)練 model_gru.fit(X_train, y_train, epochs=20, batch_size=32) >>>Output exceeds the size limit. Open the full output data in a text editor Epoch 1/20 85/85 [==============================] - 18s 209ms/step - loss: 0.0351 Epoch 2/20 85/85 [==============================] - 18s 217ms/step - loss: 0.0032 Epoch 3/20 85/85 [==============================] - 19s 224ms/step - loss: 0.0026 Epoch 4/20 85/85 [==============================] - 19s 225ms/step - loss: 0.0023 Epoch 5/20 85/85 [==============================] - 19s 221ms/step - loss: 0.0021 Epoch 6/20 85/85 [==============================] - 19s 225ms/step - loss: 0.0019 Epoch 7/20 85/85 [==============================] - 19s 226ms/step - loss: 0.0018 Epoch 8/20 85/85 [==============================] - 19s 223ms/step - loss: 0.0017 Epoch 9/20 85/85 [==============================] - 19s 229ms/step - loss: 0.0016 Epoch 10/20 85/85 [==============================] - 19s 227ms/step - loss: 0.0015 Epoch 11/20 85/85 [==============================] - 19s 226ms/step - loss: 0.0016 Epoch 12/20 85/85 [==============================] - 15s 177ms/step - loss: 0.0014 Epoch 13/20 ... Epoch 19/20 85/85 [==============================] - 11s 135ms/step - loss: 0.0013 Epoch 20/20 85/85 [==============================] - 12s 139ms/step - loss: 0.0012 <tensorflow.python.keras.callbacks.History at 0x140e4feb8> # 準(zhǔn)備測試集X_test,進(jìn)行股價預(yù)測 X_test = [] for i in range(60, 311):X_test.append(inputs[i-60:i, 0])X_test = np.array(X_test) # numpy 類型轉(zhuǎn)換X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1)) #################### GRU_predicted = model_gru.predict(X_test) GRU_predicted_stock_price = sc.inverse_transform(GRU_predicted) # 可視化 plot_predictions(test_set, GRU_predicted_stock_price)

總結(jié)

以上是生活随笔為你收集整理的lstm单变量预测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩大片在线观看 | 日韩av不卡在线 | 欧美激情精品久久久久久免费 | ts人妖在线| 一级全黄少妇性色生活片 | 开心激情五月婷婷 | 精品中文字幕视频 | 亚洲香蕉 | 强行糟蹋人妻hd中文字幕 | 成人av在线网站 | 污视频网站在线观看 | 一区二区日韩视频 | 啪啪免费| 黄色三级在线观看 | 日韩欧美字幕 | 激情图片在线视频 | 日韩国产欧美一区二区三区 | 女人床技48动态图 | 亚洲精品国产电影 | 999国产精品视频免费 | 成人在线免费视频播放 | 天干夜天干天天天爽视频 | 色女人网 | 日韩女优一区二区 | 亚洲国产欧美在线观看 | 久操视频免费观看 | 欧美日韩免费在线观看 | 少妇太紧太爽又黄又硬又爽小说 | 国产91精选 | 午夜高清视频 | 日韩女优一区 | 国产传媒专区 | 午夜丁香网 | 狠狠爱夜夜操 | 国产第一页视频 | 四虎在线视频 | 小柔的裸露日记h | 伊人春色在线视频 | 色老头一区二区三区 | 日本一区二区三区在线观看视频 | 色成人综合 | 亚洲激情av | 美国毛片基地 | 两个小y头稚嫩紧窄h文 | a级黄毛片| 亚洲人成无码www久久久 | 无码人妻丰满熟妇区毛片蜜桃精品 | 国产精品99久久久久久大便 | 影音先锋啪啪 | 看片一区 | 农村妇女一区二区 | 国产视频一区二区在线 | 最近2019中文字幕大全第二页 | 97精品国产97久久久久久春色 | 超碰xxx | 中文字幕乱码中文乱码b站 国产一区二区三区在线观看视频 | 美女网站免费黄 | 国产成人一区二区三区电影 | 2019中文字幕在线视频 | 色老头一区二区三区在线观看 | 337p亚洲精品色噜噜狠狠 | 日韩一区二区三区四区五区 | 插插插日日日 | 久久久久久亚洲中文字幕无码 | 久久福利电影 | 日日噜噜噜噜人人爽亚洲精品 | 色戒电影未测减除版 | 少妇激情一区二区三区视频 | 亚洲AV成人无码久久精品同性 | 狠狠操天天操夜夜操 | 亚洲a级在线观看 | 欧美在线a| 国产小视频免费在线观看 | 精品91久久久 | 日韩av在线免费观看 | 国产三级第一页 | 久久久久综合 | 少妇人妻综合久久中文字幕 | av在线在线 | 四虎av| 神马午夜影院 | 四虎影视免费永久观看在线 | 激情综合丁香五月 | 九九久久精品 | 色视频在线观看免费 | 亚洲精品久久久久久动漫器材一区 | 黄网av| 9.1在线观看免费 | 青草青在线| 可以免费看黄的网站 | 在线毛片网站 | 午夜鲁鲁| 一级黄网站 | 成人午夜影片 | av毛片一区 | 亚洲风情第一页 | 天天综合天天添夜夜添狠狠添 | 免费的一级黄色片 | 99资源在线|