미래의 시계열 데이터 예측 방법
조회수 806회
모델을 훈련 시킨 이후 시계열 데이터의 미래를 예측하고자 합니다.
모델 훈련 이후 어떻게 predict를 활용하여 미래의 예측값을 구하는지 궁금합니다.
다음과 같은 방법을 사용했으나
a = y_val[-look_back:]
for i in range(N-step prediction): #predict a new value n times.
tmp = model.predict(a.reshape(-1, look_back, num_feature)) #predicted value
a = a[1:] #remove first
a = np.append(a, tmp) #insert predicted value
결과는 매번 코드를 실행할때 마다 y=ax 혹은 y=-ax의 형태로 plot이 됩니다.
결과는 다음과 같습니다.
미래의 예측값을 구하는 방법이 제대로 된 것인지 궁금합니다.
전체 코드는 다음과 같습니다.
def create_dataset(signal_data, look_back=1):
dataX, dataY = [], []
for i in range(len(signal_data) - look_back):
dataX.append(signal_data[i:(i + look_back), :])
dataY.append(signal_data[i + look_back, -1])
return np.array(dataX), np.array(dataY)
look_back = 20
df = pd.read_csv('kospi.csv')
signal_data = df[["close"]].values.astype('float32')
train_size = int(len(signal_data) * 0.80)
test_size = len(signal_data) - train_size - int(len(signal_data) * 0.05)
val_size = len(signal_data) - train_size - test_size
train = signal_data[0:train_size]
val = signal_data[train_size:train_size + val_size]
test = signal_data[train_size + val_size:len(signal_data)]
x_train, y_train = create_dataset(train, look_back)
x_test, y_test = create_dataset(test, look_back)
x_val, y_val = create_dataset(val, look_back)
model = Sequential([
layers.LSTM(20, input_shape=(None, 1)),
layers.Dense(1)
])
model.compile(optimizer='adam', loss='mae')
history = model.fit(x_train, y_train, epochs=50, batch_size=64, verbose=0, validation_data=(x_val, y_val))
a = y_val[look_back:]
for i in range(N):
tmp = model.predict(a.reshape(-1, look_back, num_feature)) #predicted value
a = a[1:] #remove first
a = np.append(a, tmp) #insert predicted value
Python 3.6
Tensorflow 2.1.0
댓글 입력