Menu
CoddyTech

Die IQR-Regel

Teil des Abschnitts Statistik für ML der Machine Learning-Journey von Coddy. Lektion 25 von 64.

Ein Boxplot stellt weit entfernte Werte als Punkte dar. Um sie im Code zu finden, wandle seine Regel in zwei Grenzlinien um, die jeweils 1,5 IQR über die Kanten der Box hinausragen:

12 Konzertticketpreise als Punkte auf einer Linie. Zehn liegen in einer schmalen Box zwischen etwa 37 und 43 Euro. Gestrichelte Grenzlinien liegen jeweils 1,5 IQR außerhalb der Kanten der Box, bei 28.1 und 51.1, und die Preise 18 und 72 liegen außerhalb dieser Grenzen und sind rot als Ausreißer markiert

Im Code, mit Masken:

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)])

Dies gibt aus:

28.125 51.125
[72 18]

Quartile ignorieren Extremwerte, sodass ein Ausreißer die Grenzen nicht so weit verschieben kann, dass er sich selbst verbirgt. Kennzeichne diese Werte vor dem Training: Ein einzelner extremer Wert kann ein Modell in seine Richtung ziehen.

challenge icon

Aufgabe

Mittel

Eine Lehrkraft hat die Dauer eines Quiz gemessen, und das Programm liest die Minuten jedes Schülers in minutes ein. Der vorgegebene Code gibt die Grenzen aus, die iqr_fences zurückgibt.

  1. Vervollständige iqr_fences(a), sodass die untere und die obere IQR-Grenze von a zurückgegeben werden.
  2. Gib darunter Unusual: und die Zeiten außerhalb der Grenzen in ihrer ursprünglichen Reihenfolge aus.

Für 9 Schüler, die 8, 11, 9, 10, 27, 12, 9, 10 und 11 Minuten benötigen:

Fences: 6.0 to 14.0 minutes
Unusual: [27]

Probier es selbst

import numpy as np


# Gibt die untere und obere IQR-Grenze eines Arrays zurück
def iqr_fences(a):
    # Schreibe deinen Code hier
    return 0.0, 0.0


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

# Ändere die folgenden Zeilen nicht
low, high = iqr_fences(minutes)
print(f"Fences: {np.round(low, 2)} to {np.round(high, 2)} minutes")

# Schreibe deinen Code darunter
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Statistik für ML

Übe selbstständig: Online-Python-Compiler