Menu
CoddyTech

La règle de l’écart interquartile

Fait partie de la section Statistiques pour le ML du Journey Machine Learning de Coddy. Leçon 25 sur 64.

Un diagramme en boîte représente les valeurs éloignées par des points. Pour les trouver dans le code, transformez sa règle en deux bornes, situées à 1.5 IQR au-delà de chaque bord de la boîte :

12 prix de billets de concert représentés par des points sur une ligne. Dix se trouvent dans une boîte étroite autour de 37 à 43 euros. Les bornes en pointillés se situent à 1.5 IQR de chaque bord de la boîte, à 28.1 et 51.1, et les prix de 18 et 72 sont au-delà, marqués comme valeurs aberrantes en rouge

En code, avec des masques :

prices = np.array([35, 42, 38, 45, 40, 72, 37, 44, 39, 41, 36, 18])
q1 = np.percentile(prices, 25)
q3 = np.percentile(prices, 75)
iqr = q3 - q1
low = q1 - 1.5 * iqr
high = q3 + 1.5 * iqr
print(low, high)
print(prices[(prices < low) | (prices > high)])

Cela affiche :

28.125 51.125
[72 18]

Les quartiles ignorent les valeurs extrêmes, de sorte qu’une valeur aberrante ne peut pas étirer les limites pour se cacher. Signalez ces valeurs avant l’entraînement : une seule valeur extrême peut attirer un modèle vers elle.

challenge icon

Défi

Moyen

Un enseignant a chronométré un quiz, et le programme lit le nombre de minutes de chaque élève dans minutes. Le code de départ affiche les bornes renvoyées par iqr_fences.

  1. Complète iqr_fences(a) pour qu’elle renvoie la borne inférieure et la borne supérieure de l’IQR de a.
  2. Ci-dessous, affiche Unusual: et les durées situées en dehors des bornes, dans leur ordre d’origine.

Pour 9 élèves qui ont mis 8, 11, 9, 10, 27, 12, 9, 10 et 11 minutes :

Fences: 6.0 to 14.0 minutes
Unusual: [27]

Essayez vous-même

import numpy as np


# Renvoie les bornes IQR inférieure et supérieure d'un tableau
def iqr_fences(a):
    # Écrivez votre code ici
    return 0.0, 0.0


n = int(input())
values = []
for i in range(n):
    values.append(int(input()))
minutes = np.array(values)

# Ne modifiez pas les lignes ci-dessous
low, high = iqr_fences(minutes)
print(f"Fences: {np.round(low, 2)} to {np.round(high, 2)} minutes")

# Écrivez votre code ci-dessous
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Statistiques pour le ML

Entraînez-vous par vous-même : Compilateur Python en ligne