Le notebook de référence pour ce tutoriel est TimeSeries.
Lorsqu’on a créé un dataset pour les time series – comme ci-dessous :
def windowed_dataset(series, window_size, batch_size, shuffle_buffer):
dataset = tf.data.Dataset.from_tensor_slices(series)
dataset = dataset.window(window_size + 1, shift=1, drop_remainder=True)
dataset = dataset.flat_map(lambda window: window.batch(window_size + 1))
dataset = dataset.shuffle(shuffle_buffer).map(lambda window: (window[:-1], window[-1]))
dataset = dataset.batch(batch_size).prefetch(1)
return dataset
et un modèle :
dataset = windowed_dataset(x_train, window_size, batch_size, shuffle_buffer_size)
print(dataset)
l0 = tf.keras.layers.Dense(1, input_shape=[window_size])
model = tf.keras.models.Sequential([l0])
model.compile(loss="mse", optimizer=tf.keras.optimizers.SGD(lr=1e-6, momentum=0.9))
model.fit(dataset,epochs=100,verbose=0)
1
model.summary()
Ici le modèle est des plus simples puisque c’est un modèle linéaire.
model.fit(dataset,epochs=100,verbose=0)
On peut ensuite effectuer des prévisions (forecasts) :
forecast = []
for time in range(len(series) - window_size):
forecast.append(model.predict(series[time:time + window_size][np.newaxis]))
forecast = forecast[split_time-window_size:]
results = np.array(forecast)[:, 0, 0]
plt.figure(figsize=(10, 6))
plot_series(time_valid, x_valid)
plot_series(time_valid, results)
On utilise model.predict pour calculer les prévisions et plot_series pour afficher les résultats comparés.
Ensuite on calcule la métrique, MAE le plus souvent.
tf.keras.metrics.mean_absolute_error(x_valid, results).numpy()