Menu
CoddyTech

Правило IQR

Часть раздела Статистика для машинного обучения путешествия по Machine Learning на Coddy. Урок 25 из 64.

На диаграмме размаха значения, сильно удалённые от остальных, отображаются точками. Чтобы найти их в коде, преобразуй правило в две границы, расположенные на расстоянии 1.5 IQR за каждым краем диаграммы:

12 цен на билеты на концерт в виде точек на линии. Десять находятся внутри узкой коробки примерно от 37 до 43 евро. Пунктирные границы расположены на расстоянии 1.5 IQR от каждого края коробки — на отметках 28.1 и 51.1, а цены 18 и 72 лежат за ними и отмечены красным как выбросы

В коде, с масками:

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

Это выводит:

28.125 51.125
[72 18]

Квартили игнорируют крайние значения, поэтому выброс не может растянуть границы, чтобы скрыться. Отметь эти значения перед обучением: одно аномальное значение может сместить модель в свою сторону.

challenge icon

Задание

Средне

Учитель засёк время прохождения теста, и программа считывает время каждого ученика в минутах в minutes. Начальный код выводит границы, которые возвращает iqr_fences.

  1. Допиши iqr_fences(a), чтобы она возвращала нижнюю и верхнюю границы IQR для a.
  2. Ниже выведи Unusual: и значения времени за пределами границ в исходном порядке.

Для 9 учеников, потративших 8, 11, 9, 10, 27, 12, 9, 10 и 11 минут:

Fences: 6.0 to 14.0 minutes
Unusual: [27]

Попробуйте сами

import numpy as np


# Возвращает нижнюю и верхнюю границы IQR для массива
def iqr_fences(a):
    # Напишите здесь свой код
    return 0.0, 0.0


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

# Не изменяйте строки ниже
low, high = iqr_fences(minutes)
print(f"Fences: {np.round(low, 2)} to {np.round(high, 2)} minutes")

# Напишите свой код ниже
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Статистика для машинного обучения

Потренируйтесь самостоятельно: Онлайн-компилятор Python