In questo articolo ti guiderò attraverso il processo di creazione di modelli di serie temporali utilizzando TensorFlow, un potente framework per la costruzione e l'addestramento di reti neurali. Ti mostrerò una varietà di architetture di rete neurale per la previsione delle serie temporali, che vanno da modelli semplici come SimpleRNN a quelli più complessi come LSTM. Inoltre, presenterò le tecniche di visualizzazione avanzate che ho utilizzato per effettuare e visualizzare previsioni oltre il periodo di convalida.
Ho utilizzato le seguenti librerie: TensorFlow con Keras per la creazione di reti neurali, Matplotlib per la visualizzazione, NumPy per le operazioni numeriche e Scikit-Learn per la preelaborazione dei dati.
import numpy as np
import tensorflow as tf
from matplotlib import pyplot as plt
from sklearn.preprocessing import MinMaxScaler
La preparazione dei dati è fondamentale per il successo di qualsiasi modello di machine learning. In questa sezione verranno eseguiti diversi passaggi per preparare i dati per il training e la convalida.
Separazione dei dati e dei passaggi temporali
Il primo passo è separare i passaggi temporali dai dati effettivi.
Per dati di serie temporali brevi (dati archiviati in un array): possiamo creare un array di passaggi temporali utilizzando 'np.arange()':
#For short time series data, data stored in an array, I'll do the following:
dummy_data = np.array((1, 2, 3,...))
time_step = np.arange(len(dummy_data))
Per set di dati più grandi archiviati in file (ad esempio file CSV): possiamo leggere i dati e i corrispondenti passaggi temporali dal file:
#For larger datasets stored in files, such as CSV files
import csvtime_step = ()
data = ()
with open("file.txt", "r", encoding="utf-8") as f:
csv_reader = csv.reader(f, delimiter=",")
# Skip the header
next(csv_reader)
# Skip lines with NUL characters
lines = (line for line in csv_reader if "\0" not in line)
# Iterate…
Fonte: towardsdatascience.com