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
Can you explain more about how to choose the right sequence length for time series forecasting?
What is the difference between min-max scaling and standardization, and when should I use each?
How do I handle missing values in time series data before preprocessing?
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!