Boîtes à moustaches et IQR

Détection d’anomalies en Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Rappel : boxplots

  • Boxplots :
    • Version visuelle enrichie du résumé en 5 nombres
    • Montrent localisation, dispersion et asymétrie des données
    • Indiquent la présence de valeurs aberrantes

Exemple de boxplot avec annotations.

Détection d’anomalies en Python

Composants d’un boxplot

Un boxplot avec les 25e et 75e percentiles et la boîte annotés par des flèches et du texte.

Détection d’anomalies en Python

Moustaches

Un autre boxplot avec plus d’annotations : la médiane, un exemple de valeur aberrante, et les limites inférieure/supérieure.

Détection d’anomalies en Python

Inter Quartile Range (IQR)

  • IQR – Inter Quartile Range
  • IQR = Q3 - Q1
  • Longueur des moustaches : combinaison de l’IQR et d’un facteur

Le même boxplot que dans la diapo précédente, en plus petit.

Détection d’anomalies en Python

Calcul des moustaches

  • Facteur = 1,5
  • Limite inférieure : $Q1 - 1.5 * IQR$
  • Limite supérieure : $Q3 + 1.5 * IQR$

Le même boxplot que dans la diapo précédente.

Détection d’anomalies en Python

Tracer des boxplots

import matplotlib.pyplot as plt

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

Un boxplot des ventes de produits avec de nombreuses valeurs aberrantes formant une ligne noire au-dessus de la limite supérieure.

Détection d’anomalies en Python

Contrôler la longueur des moustaches

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

Un boxplot des ventes de produits avec moins de valeurs aberrantes au-dessus de la moustache supérieure.

Détection d’anomalies en Python

IQR en code

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


# Calculate IQR IQR = q3 - q1 # Set Multiplying factor factor = 2.5
Détection d’anomalies en Python

Détecter les valeurs aberrantes avec l’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
Détection d’anomalies en Python

La flexibilité de la méthode

  • Les boxplots et le filtrage par IQR offrent une grande souplesse
  • Permettent de définir des règles personnalisées pour marquer les valeurs aberrantes
Détection d’anomalies en Python

Passons à la pratique !

Détection d’anomalies en Python

Preparing Video For Download...