Pre-elaborazione dei Dati delle Serie Temporali
I passaggi fondamentali della pre-elaborazione dei dati delle serie temporali per un progetto di previsione vengono trattati in questo capitolo. La pre-elaborazione garantisce che i dati siano puliti, ben strutturati e pronti per l'addestramento del modello. Gli argomenti includono scaling delle caratteristiche, suddivisione train-test e creazione delle sequenze, tutti essenziali per una preparazione efficace dei dati.
- Scaling delle caratteristiche: lo scaling delle caratteristiche è importante per garantire che tutte le variabili in ingresso siano su una scala simile. Questo aiuta modelli come LSTM e ARIMA a convergere più rapidamente e a migliorare le loro prestazioni. Le tecniche comuni per lo scaling includono il min-max scaling e la standardizzazione (normalizzazione z-score). Lo scaling consente al modello di concentrarsi sulle relazioni all'interno dei dati invece di essere influenzato da variabili con intervalli più ampi;
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_train_data = scaler.fit_transform(train_data_raw)
scaled_test_data = scaler.transform(test_data_raw)
- Suddivisione train-test: suddividere il dataset in sottoinsiemi di addestramento e test è essenziale per valutare le prestazioni del modello. Tipicamente, un dataset di serie temporali viene suddiviso in ordine cronologico, utilizzando la parte iniziale dei dati per l'addestramento e la parte finale per il test. Questo assicura che il modello venga valutato su dati mai visti prima e simula scenari di previsione reali. Un rapporto comune è 80% per l'addestramento e 20% per il test, ma può variare in base alla dimensione e alle caratteristiche dei dati;
train_split_ratio = 0.8
train_size = int(len(price_data) * train_split_ratio)
train_data_raw = price_data[:train_size]
test_data_raw = price_data[train_size:]
- Creazione delle sequenze: nella previsione delle serie temporali, soprattutto con modelli come LSTM, i dati devono essere trasformati in formato sequenziale. La creazione delle sequenze consiste nel modellare i dati in coppie input-output, dove ogni input corrisponde a una sequenza di osservazioni passate e l'output è il valore previsto per il passo temporale successivo. Questo è fondamentale affinché i modelli apprendano dai passi temporali precedenti e producano previsioni accurate per i passi futuri.
def create_sequences(data, seq_length):
xs = []
ys = []
for i in range(len(data) - seq_length):
x = data[i:(i + seq_length)]
y = data[i + seq_length]
xs.append(x)
ys.append(y)
# Ensure numpy arrays are returned, helps with tensor conversion later
return np.array(xs), np.array(ys)
In sintesi, la pre-elaborazione è una fase fondamentale nella previsione delle serie temporali. Scalando le caratteristiche, suddividendo i dati per addestramento e test e creando sequenze per l'input del modello, si garantisce che i dati siano ben preparati per una previsione accurata ed efficiente.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 4.55
Pre-elaborazione dei Dati delle Serie Temporali
Scorri per mostrare il menu
I passaggi fondamentali della pre-elaborazione dei dati delle serie temporali per un progetto di previsione vengono trattati in questo capitolo. La pre-elaborazione garantisce che i dati siano puliti, ben strutturati e pronti per l'addestramento del modello. Gli argomenti includono scaling delle caratteristiche, suddivisione train-test e creazione delle sequenze, tutti essenziali per una preparazione efficace dei dati.
- Scaling delle caratteristiche: lo scaling delle caratteristiche è importante per garantire che tutte le variabili in ingresso siano su una scala simile. Questo aiuta modelli come LSTM e ARIMA a convergere più rapidamente e a migliorare le loro prestazioni. Le tecniche comuni per lo scaling includono il min-max scaling e la standardizzazione (normalizzazione z-score). Lo scaling consente al modello di concentrarsi sulle relazioni all'interno dei dati invece di essere influenzato da variabili con intervalli più ampi;
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_train_data = scaler.fit_transform(train_data_raw)
scaled_test_data = scaler.transform(test_data_raw)
- Suddivisione train-test: suddividere il dataset in sottoinsiemi di addestramento e test è essenziale per valutare le prestazioni del modello. Tipicamente, un dataset di serie temporali viene suddiviso in ordine cronologico, utilizzando la parte iniziale dei dati per l'addestramento e la parte finale per il test. Questo assicura che il modello venga valutato su dati mai visti prima e simula scenari di previsione reali. Un rapporto comune è 80% per l'addestramento e 20% per il test, ma può variare in base alla dimensione e alle caratteristiche dei dati;
train_split_ratio = 0.8
train_size = int(len(price_data) * train_split_ratio)
train_data_raw = price_data[:train_size]
test_data_raw = price_data[train_size:]
- Creazione delle sequenze: nella previsione delle serie temporali, soprattutto con modelli come LSTM, i dati devono essere trasformati in formato sequenziale. La creazione delle sequenze consiste nel modellare i dati in coppie input-output, dove ogni input corrisponde a una sequenza di osservazioni passate e l'output è il valore previsto per il passo temporale successivo. Questo è fondamentale affinché i modelli apprendano dai passi temporali precedenti e producano previsioni accurate per i passi futuri.
def create_sequences(data, seq_length):
xs = []
ys = []
for i in range(len(data) - seq_length):
x = data[i:(i + seq_length)]
y = data[i + seq_length]
xs.append(x)
ys.append(y)
# Ensure numpy arrays are returned, helps with tensor conversion later
return np.array(xs), np.array(ys)
In sintesi, la pre-elaborazione è una fase fondamentale nella previsione delle serie temporali. Scalando le caratteristiche, suddividendo i dati per addestramento e test e creando sequenze per l'input del modello, si garantisce che i dati siano ben preparati per una previsione accurata ed efficiente.
Grazie per i tuoi commenti!