Fazendo Previsões usando LSTM com o Keras

Bom dia, grupo.

Estou fazendo uns testes com modelos preditivos usando lstm com o keras.

No teste que eu fiz, eu treinei o modelo com alguns dados aleatórios que eu achei na internet.

Só que eu estou com dúvida na parte das previsões.

Para fazer as previsões no keras ele usa o ” model.predict” com variavel X para fazer as previsões.

Tipo, eu treinei o meu modelo com 200 amostras por exemplo. Dai eu noto que ele faz a previsão para 200 amostras, uma vez que as entradas e saidas (X e y) possuem o mesmo shape.

Mas se eu quiser treinar o meu modelo com 200 amostras(no caso do meu modelo eu fiz o treino com 5 amostras) e fazer a previsão para 20 amostras (amostras essas que não fazem parte dos dados de treino e teste).

Resumindo, eu tenho dados temporais de 2012 até o ano 2018. Eu usei (não nesse exemplo) eu dividi meu dataset para treino de 2012 até 2017. Usei o ano de 2018 para testar o modelo (avaliar). Mas agora eu quero fazer as previsões (com o meu modelo treinado) desses dados para o ano de 2019. Como faz? Eu teria que criar um vetor vazio de tamanho “Z” (shape das previsões que eu quero) e usar ele no “model.predict”?

Abaixo segue o meu código.

Grato pela atenção.

from keras.models import Sequential from keras.layers import Dense from keras.layers import LSTM from numpy import array from keras.models import load_model import numpy as np from sklearn.metrics import mean_absolute_error import matplotlib.pyplot as plt

return training data

def get_train(): seq = [[0.0, 0.1], [0.1, 0.2], [0.2, 0.3], [0.3, 0.4], [0.4, 0.5]] seq = array(seq) X, y = seq[:,0], seq[:, 1] X = X.reshape((len(X), 1, 1)) return X, y

define model

model = Sequential() model.add(LSTM(10, input_shape=(1,1))) model.add(Dense(1, activation=’linear’))

compile model

model.compile(loss=’mse’, optimizer=’adam’)

fit model

X,y = get_train() model.fit(X, y, epochs=300)

save model to single file

model.save(‘lstm_model.h5’)

load model from single file

model = load_model(‘lstm_model.h5’)

make predictions

previsao = model.predict(X, verbose=0) print(previsao)

Plotagem Previsões

plt.plot(y, color = ‘red’, label = ‘Gravidade Real’) plt.plot(previsao, color = ‘blue’, label = ‘Previsoes’) plt.title(‘Previsões’) plt.xlabel(‘Prev_Gravidade’) plt.ylabel(‘Gravidade Real’) plt.legend() plt.show()