0Pricing
Learn AI with Python · Lezione

Rilevamento e rimozione degli outlier

Metodo dello z-score, metodo IQR, concetto di isolation forest e gestione pratica degli outlier.

Rilevamento e rimozione degli outlier è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.

Che cos'è un outlier?

Un outlier è un valore molto distante dal resto dei dati. Può essere un estremo reale, un errore di inserimento o un malfunzionamento del sensore. Gli outlier possono distorcere medie, varianze e modelli, quindi è importante rilevarli in modo consapevole.

Il metodo dello z-score

Uno z-score misura quante deviazioni standard separano un valore dalla media: z = (x - mean) / std. Una regola comune segnala come outlier ogni punto con |z| > 3.

import numpy as np
data = np.array([10, 12, 11, 13, 12, 100])
z = (data - data.mean()) / data.std()
print(np.round(z, 2))

Rilevare gli outlier con scipy zscore

scipy.stats.zscore calcola gli z-score di un array. Lo si può combinare con una soglia per creare una maschera booleana degli outlier.

from scipy import stats
z = np.abs(stats.zscore(data))
outliers = z > 3
print(data[outliers])

Limite dello z-score

Lo z-score usa la media e la deviazione standard, che a loro volta vengono influenzate dagli outlier. Con dati fortemente asimmetrici o valori estremi, gli z-score possono rilevare troppo pochi casi. Il metodo IQR è più robusto.

Il metodo IQR

L'intervallo interquartile IQR = Q3 - Q1 comprende il 50% centrale dei dati. Viene calcolato a partire dai quartili, che gli outlier spostano solo marginalmente, rendendolo robusto.

q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)
iqr = q3 - q1
print(q1, q3, iqr)

Limiti IQR

I limiti di Tukey definiscono gli estremi: inferiore = Q1 - 1.5*IQR, superiore = Q3 + 1.5*IQR. Tutto ciò che si trova al di fuori viene segnalato. La stessa regola determina i baffi di un boxplot.

lower = q1 - 1.5 * iqr
upper = q3 + 1.5 * iqr
mask = (data < lower) | (data > upper)
print(data[mask])   # outliers

Visualizzazione con boxplot

Un boxplot visualizza la regola IQR: il riquadro va da Q1 a Q3, la linea rappresenta la mediana, i baffi raggiungono i limiti e i punti oltre questi limiti vengono mostrati come singoli outlier.

# import matplotlib.pyplot as plt
# plt.boxplot(data)
# plt.show()

Rimozione degli outlier

Una volta segnalati, è possibile ELIMINARE le righe contenenti outlier. Proceda con cautela: rimuovere dati reali può introdurre una distorsione nei risultati. Conservi un registro di ciò che è stato rimosso e del motivo.

clean = data[~mask]
print(clean)   # outlier removed

Winsorizzazione con np.clip

Invece di eliminare i valori estremi, la winsorizzazione li limita a estremi scelti con np.clip. In questo modo si conserva il numero di righe, riducendo al contempo l'influenza dei valori estremi.

capped = np.clip(data, lower, upper)
print(capped)   # extreme value pulled to the upper fence

Limitare ai percentili

Una scelta comune per la winsorizzazione consiste nel limitare i valori al primo e al novantanovesimo percentile, eliminando solo il 2 percento più estremo dei valori, in modo simmetrico.

lo, hi = np.percentile(data, [1, 99])
print(np.clip(data, lo, hi))

Rimuovere o limitare?

Scelga in base al contesto: RIMUOVA gli errori evidenti (valori impossibili), LIMITI i valori autentici ma estremi che desidera conservare e, talvolta, MANTENGA gli outlier quando rappresentano il segnale da individuare (rilevamento delle frodi). Documenti la decisione.

Verifica rapida

Metta alla prova le proprie conoscenze sugli outlier.

Riepilogo

Strumenti per la gestione degli outlier:

  • z-score: segnala |z| > 3 tramite scipy.stats.zscore (sensibile agli outlier)
  • limiti IQR: da Q1-1.5*IQR a Q3+1.5*IQR (robusti, alla base dei boxplot)
  • Rimuova gli errori autentici; winsorizzi con np.clip per limitare i valori estremi
  • Documenti sempre il motivo per cui i valori sono stati rimossi o limitati

Domande Frequenti

La lezione «Rilevamento e rimozione degli outlier» è gratuita?

Sì — il testo completo di «Rilevamento e rimozione degli outlier» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.

Cosa imparerò in «Rilevamento e rimozione degli outlier»?

Metodo dello z-score, metodo IQR, concetto di isolation forest e gestione pratica degli outlier. Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Learn AI with Python?

Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Rilevamento e rimozione degli outlier»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?

Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Rilevamento e rimozione degli outlier
  2. Codifica delle variabili categoriche
  3. Ridimensionamento delle feature: normalizzazione e standardizzazione
  4. Creazione di pipeline di preprocessing
← Torna a Learn AI with Python