Боксплоти та IQR

Виявлення аномалій у Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Підсумок про боксплоти

  • Боксплоти:
    • Покращена візуалізація 5-числового підсумку
    • Показують розташування даних, розкид і асиметрію
    • Вказують на наявність викидів

Зразок боксплоту з поясненнями.

Виявлення аномалій у Python

Складові боксплоту

Боксплот із позначеними 25-м, 75-м перцентилями та прямокутником.

Виявлення аномалій у Python

«Вуса»

Ще один боксплот із додатковими позначеннями: медіана, приклад викиду, нижня й верхня межі викидів.

Виявлення аномалій у Python

Міжквартильний розмах (IQR)

  • IQR — Inter Quartile Range
  • IQR = Q3 - Q1
  • Довжини «вусів» — комбінація IQR і коефіцієнта

Той самий боксплот із попереднього слайду, але менший.

Виявлення аномалій у Python

Обчислення довжин «вусів»

  • Коефіцієнт = 1,5
  • Нижня межа: $Q1 - 1.5 * IQR$
  • Верхня межа: $Q3 + 1.5 * IQR$

Той самий боксплот із попереднього слайду.

Виявлення аномалій у Python

Побудова боксплотів

import matplotlib.pyplot as plt

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

Боксплот продажів продукту з численними викидами, що утворюють чорну лінію над верхньою межею викидів.

Виявлення аномалій у Python

Керування довжиною «вусів»

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

Боксплот продажів продукту з меншою кількістю викидів над верхнім «вусом».

Виявлення аномалій у Python

IQR у коді

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


# Calculate IQR IQR = q3 - q1 # Set Multiplying factor factor = 2.5
Виявлення аномалій у Python

Пошук викидів за 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
Виявлення аномалій у Python

Гнучкість методу

  • Боксплоти та фільтрування IQR дають велику гнучкість
  • Дозволяють створювати власні правила для позначення викидів
Виявлення аномалій у Python

Давайте потренуємось!

Виявлення аномалій у Python

Preparing Video For Download...