나는 휴일 동안 Keras에 대한 경험을 쌓기 위해 노력하고 있으며, 주식 데이터에 대한 timeseries 예측의 교과서 예부터 시작할 것이라고 생각했습니다. 그래서 제가하려고하는 것은 평균 48 시간의 평균 가격 변화 (이전의 퍼센트)가 주어지고 다음 시간의 평균 가격이 얼마인지를 예측합니다.Keras LSTM 예고편 추측 및 축퇴
그러나 테스트 세트 (또는 트레이닝 세트)에 대해 검증 할 때 예측 시리즈의 진폭은 항상 꺼져 있고 때로는 항상 양의 값 또는 항상 음의 값으로 시프트됩니다. 즉 0 % 나는 이런 종류의 일에 맞을 것이라고 생각한다. 당신이 볼 수 있듯이
df = pandas.DataFrame.from_csv('test-data-01.csv', header=0)
df['pct'] = df.value.pct_change(periods=1)
seq_len=48
vals = df.pct.values[1:] # First pct change is NaN, skip it
sequences = []
for i in range(0, len(vals) - seq_len):
sx = vals[i:i+seq_len].reshape(seq_len, 1)
sy = vals[i+seq_len]
sequences.append((sx, sy))
row = -24
trainSeqs = sequences[:row]
testSeqs = sequences[row:]
trainX = np.array([i[0] for i in trainSeqs])
trainy = np.array([i[1] for i in trainSeqs])
model = Sequential()
model.add(LSTM(25, batch_input_shape=(1, seq_len, 1)))
model.add(Dense(1))
model.compile(loss='mse', optimizer='adam')
model.fit(trainX, trainy, epochs=1, batch_size=1, verbose=1, shuffle=True)
pred = []
for s in trainSeqs:
pred.append(model.predict(s[0].reshape(1, seq_len, 1)))
pred = np.array(pred).flatten()
plot(pred)
plot([i[1] for i in trainSeqs])
axis([2500, 2550,-0.03, 0.03])
, 나는, 지난 48 시간을 선택하여, 교육 및 테스트 시퀀스를 생성하고 튜플에 다음 단계 :
나는이 문제를 보여주기 위해 다음과 같은 최소한의 예를 함께했다 , 그리고 나서 1 시간 동안 진행하면서 절차를 반복하십시오. 모델은 매우 간단한 1 LSTM 및 1 밀도 레이어입니다.
개별 예측 포인트의 플롯은 트레이닝 시퀀스의 플롯 (모든 것이 훈련 된 동일한 세트 임)과 테스트 시퀀스에 대한 일종의 일치를 기대할 수 있습니다. 데이터
는 계속 될 수 있습니다 어떤 생각 예측 :
- 오렌지 : 진정한 데이터
- 블루 그러나 나는 훈련 데이터에 다음과 같은 결과를 얻을? 내가 뭔가를 오해 했니?
업데이트 : 내가 의미하는 바를 쉬프트하고 부숴 버렸습니다. 실제 데이터와 일치하도록 예측치를 다시 플롯하고 진폭을 일치시키기 위해 곱해 봤습니다.
당신이 예측이 잘 실제 데이터에 맞는 볼 수 있듯이
는, 단지 숙청 어떻게 든 오프셋, 그리고 그 이유를 알아낼 수 없습니다입니다.plot(pred*12-0.03) plot([i[1] for i in trainSeqs]) axis([2500, 2550,-0.03, 0.03])
아직 교육 데이터에 있으므로 "좋은 적합성"을 기대합니다. 예측이 새로운 데이터에 대해 수행되면 분산 될 수 있다는 것을 완전히 이해할 것입니다. 그러나 교육 세트에서 모델의 재조정 및 이동이 필요없이 좋은 근사값을 반환 할 것으로 기대합니다. – cdecker
당신은 test-data-01.csv를 공유 할 수 있습니까? – grubjesic
은 물론 : 나는 https://gist.github.com/anonymous/50dc9e36616605bfbf021642b47a4336 – cdecker