2017-11-27 9 views
0

주차 공간이 얼마나 꽉 찼는 지 예측할 때 개념 증명을하려고합니다. 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) 

내 dataframe의 머리입니다.
# 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) 

지금 내가, 몇 가지 질문을

입력 치수가 동일하지 않기 때문에 기차 및 테스트 데이터의 크기가 서로 다른 문제가있는 것으로 보입니다. 어떻게해야합니까?

datetime 타임 스탬프는 내 기차/테스트 데이터의 일부가 아니며이 데이터 세트가 실제 데이터 세트 (데이터는이 데이터 세트에서 가져온 데이터 : 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

편집 : 주차 지역을 예측하기 위해 데이터를 수집하는 것이 가능한 것입니다 경우 내 작업의 목표는, 증명하는 것입니다.

+0

올바른 코드인가요? firsrt 레이어는 LSTM이며 메시지가 말하는 Dense 레이어는 아닙니다. –

+0

맞습니다. 잘못된 오류 메시지를 복사했습니다. (놀고있는 셀을 많이 재방송합니다.) 올바른 질문으로 정확한 질문을 업데이트했습니다. – Bok

답변

1

메시지에 입력 데이터 (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)이됩니다.

+0

감사합니다. 내 문제를 해결하는 데 도움이되었습니다. – Bok