2017-11-27 8 views
0

私は、駐車場がどのくらいいっぱいであるかを予測する上で、概念の証明をしようとしています。私はKerasを使ってLSTMニューラルネットワークを作成し、与えられた時間にどのくらいの領域があるかを予測しようとしています。ケラスを用いた時系列予測

これは私のデータフレームの頭です:

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) 

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 

は、私は、次のコードを実行します。

# 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)であるため、各観測間の時間は異なります。これは大丈夫ですか?私のノートPCの

フルビューはここで見ることができます:https://github.com/bok11/IS-Data-Analasys/blob/master/Data%20Exploration%20(Part%202).ipynb

EDIT:私の仕事の目標は、駐車場を予測するために、このデータを収集するために実行可能であるかどう、証明することです。

+0

これは正しいコードですか?あなたのfirsrt層はLSTMであり、メッセージが言うように密な層ではありません。 –

+0

あなたが正しいです、間違ったエラーメッセージをコピーしました(私は周りに遊んでいて、セルを再実行しています)私は正しいエラーで私の質問を更新しました – Bok

答えて

1

入力データ(numpy配列)の形状が(1,56,1)で、モデルの形状が(any, any, 56)であるとのメッセージが表示されます。

再帰ネットワークでは、入力形状は(batch size, time steps, input features)のようになります。

したがって、同じ機能の56個のタイムステップがあるのか​​、56個の異なる機能のタイムステップが1つしかないのかを判断する必要があります。次に、調整する2つの図形の1つを選択します。

LSTMを使用している場合は論理的ですが、シーケンスがあると思われるので、56のタイムステップがあるとします。

その後、LSTM層にご入力形状は次のようになります。

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

または(あなたがステップの可変数をしたい場合):

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

は、あなたがより多くを望んでいると1つの情報(例えば、日付と曜日など)。次に、2つの機能があります。あなたの形はinput_shape(None,2)になります。

+0

ありがとう、これは私の問題を解決するのに役立ちました! – Bok

関連する問題