簡體   English   中英

keras的時間序列預測

[英]Time-series prediction with keras

我正在嘗試在預測停車位已滿時進行概念驗證。 我正在嘗試使用Keras創建LSTM神經網絡,以預測給定時間某個區域的滿度。

這是我的數據框的頭部:

Time_Stamp      Weekday Area    Sub_Area    Free_Spots  Used_Spots Full%                        
2014-04-10 08:00:00 Yes Ballard Locks   NW 54TH SR ST BETWEEN 32ND AVE NW AND NW 54TH ST    68.0    1.0  1.0
2014-04-10 09:00:00 Yes Ballard Locks   NW 54TH SR ST BETWEEN 32ND AVE NW AND NW 54TH ST    68.0    2.0  3.0
2014-04-10 10:00:00 Yes Ballard Locks   NW 54TH SR ST BETWEEN 32ND AVE NW AND NW 54TH ST    12.0    0.0  0.0
2014-04-10 11:00:00 Yes Ballard Locks   NW 54TH SR ST BETWEEN 32ND AVE NW AND NW 54TH ST    12.0    0.0  0.0
2014-04-10 12:00:00 Yes Ballard Locks   NW 54TH SR ST BETWEEN 32ND AVE NW AND NW 54TH ST    12.0    0.0  0.0

我運行以下代碼:

from sklearn.model_selection import train_test_split
TRAIN,TEST,notused,notused = train_test_split(df['data']['Full%'],
                                                    df['data']['Full%'], 
                                                    test_size=0.25)
TRAIN.sort_index(inplace=True)
TEST.sort_index(inplace=True)

# create train lists
x_train = []
y_train = []

# create test lists
x_test = []
y_test = []

# fill the train lists
for i in range(len(TRAIN)-1):
    x_train.append(TRAIN[i])
    y_train.append(TRAIN[i+1])

# fill the test lists
for i in range(len(TEST)-1):
    x_test.append(TEST[i])
    y_test.append(TEST[i+1])

# change the lists to numpy arrays
x_train, y_train = np.array(x_train), np.array(y_train)
x_test, y_test = np.array(x_test), np.array(y_test)

下一部分是我無法做到這一點的地方。

x_train = x_train.reshape(1,56,1)
y_train = x_train.reshape(1,56,1)

model = Sequential()
model.add(LSTM(56, input_dim=56,return_sequences=True))
model.add(Dense(56))
model.compile(loss='mean_absolute_error', optimizer='adam',metrics=['accuracy'])
model.fit(x_train, y_train, epochs=10000, batch_size=1, verbose=2,validation_data=(x_test, y_test))

我一直在玩,但是錯誤始終是某種值錯誤:

ValueError: Error when checking input: expected lstm_24_input to have shape (None, None, 56) but got array with shape (1, 56, 1)

現在,除了我的代碼有什么問題之外,我還有幾個問題:

我的訓練和測試數據的大小不同似乎是一個問題,因為輸入維將不同。 我該如何處理?

日期時間戳不是我的火車/測試數據的一部分,並且因為該數據集是實際的(數據已從該數據集中獲取: https : //github.com/bok11/IS-Data-Analasys/blob /master/Data/Annual_Parking_Study_Data.csv ),則每次觀察之間的時間會有所不同。 這個可以嗎?

可以在這里查看我的筆記本的完整視圖: https : //github.com/bok11/IS-Data-Analasys/blob/master/Data%20Exploration%20(Part%202).ipynb

編輯:我任務的目的是證明,如果收集這些數據來預測停車位是否可行。

該消息表明您的輸入數據(numpy數組)的形狀為(1,56,1) ,而您的模型期望的形狀為(any, any, 56)

在遞歸網絡中,輸入形狀應類似(batch size, time steps, input features)

因此,您需要確定是否具有相同功能的56個時間步長,或者只有56個不同功能的一個時間步長。 然后,選擇兩個形狀之一進行調整。

如果有序列,這似乎是合乎邏輯的(如果您使用的是LSTM),所以我假設您有56個時間步。

然后,您在LSTM層中的輸入形狀應為:

LSTM(doesntMatter, input_shape=(56,1), return_sequences=True)

或者(如果您想要可變數量的步驟):

LSTM(doesntMatter, input_shape=(None,1), return_sequences=True)

假設您想要多個信息,例如日期和工作日。 然后,您有兩個功能。 然后,您的形狀將為input_shape(None,2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM