Box plot e IQR

Rilevamento delle anomalie in Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Ripasso sui boxplot

  • I boxplot:
    • Sono versioni grafiche del riepilogo a 5 numeri
    • Mostrano posizione, dispersione e asimmetria
    • Indicano la presenza di outlier

Un boxplot di esempio con annotazioni.

Rilevamento delle anomalie in Python

Componenti del boxplot

Un boxplot con 25°, 75° percentile e riquadro annotati con frecce e testo.

Rilevamento delle anomalie in Python

Whisker

Un altro boxplot con più componenti annotate: mediana, un outlier, limiti inferiore e superiore per outlier.

Rilevamento delle anomalie in Python

Intervallo interquartile (IQR)

  • IQR - Intervallo Interquartile
  • IQR = Q3 - Q1
  • Lunghezze delle whisker = combinazione di IQR e un fattore

Lo stesso boxplot della slide precedente ma più piccolo.

Rilevamento delle anomalie in Python

Calcolo delle “whisker”

  • Fattore = 1,5
  • Limite inferiore: $Q1 - 1.5 * IQR$
  • Limite superiore: $Q3 + 1.5 * IQR$

Lo stesso boxplot della slide precedente.

Rilevamento delle anomalie in Python

Disegnare boxplot

import matplotlib.pyplot as plt

plt.boxplot(sales)
plt.xlabel("Product sales")

Un boxplot delle vendite prodotto con molti outlier che formano una linea nera sopra il limite superiore.

Rilevamento delle anomalie in Python

Controllare la lunghezza delle whisker

plt.boxplot(sales, whis=2.5)
plt.xlabel("Product sales")

Un boxplot delle vendite con meno outlier sopra la whisker superiore.

Rilevamento delle anomalie in Python

IQR nel codice

# Calculate the percentiles
q1 = sales.quantile(0.25)
q3 = sales.quantile(0.75)


# Calculate IQR IQR = q3 - q1 # Set Multiplying factor factor = 2.5
Rilevamento delle anomalie in Python

Trovare outlier con IQR

# Calculate the limits
lower_limit = q1 - (IQR * factor)


upper_limit = q3 + (IQR * factor)
# Create masks
is_lower = sales < lower_limit
is_upper = sales > upper_limit


# Filter outliers = sales[is_lower | is_upper] # Print the # of outliers print(len(outliers))
29
Rilevamento delle anomalie in Python

Flessibilità del metodo

  • Boxplot e filtro con IQR sono molto flessibili
  • Permettono di creare regole personalizzate per segnare gli outlier
Rilevamento delle anomalie in Python

Passiamo alla pratica !

Rilevamento delle anomalie in Python

Preparing Video For Download...