Prepare data for time series learning

Le tutoriel qui sert de référence pour celui-ci est Preparing features and labels de Sequences, Time Series and Prediction (Coursera/Semaine 2).

Les données sont préparées de la façon suivante :

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

Tout d’abord on crée le dataset. Voir cet article pour tensor_slice.

dataset = tf.data.Dataset.from_tensor_slices(series)

Ensuite on window les données. Le +1 c’est pour le label.

dataset = dataset.window(window_size + 1, shift=1, drop_remainder=True)

Ensuite on applique un flat_map. Le but est de modifier la structure des données afin qu’elle soit compatible avec les réseaux de neurones.

dataset = dataset.flat_map(lambda window: window.batch(window_size + 1))

Puis on shuffle les données et on les split pour avoir les labels.

dataset = dataset.shuffle(shuffle_buffer).map(lambda window: (window[:-1], window[-1]))

et on termine par créer des batchs.

dataset = dataset.batch(batch_size).prefetch(1)

Creates a Dataset whose elements are slices of the given tensors