Wykresy pudełkowe i IQR

Wykrywanie anomalii w Pythonie

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Powtórzenie: wykresy pudełkowe

  • Wykresy pudełkowe:
    • Są rozszerzoną wizualną wersją podsumowania pięcioliczbowego
    • Pokazują skupienie, rozrzut i skośność danych
    • Wskazują na obecność wartości odstających

Przykładowy wykres pudełkowy z adnotacjami.

Wykrywanie anomalii w Pythonie

Elementy wykresu pudełkowego

Wykres pudełkowy z zaznaczonymi 25. i 75. percentylem oraz polem z opisami.

Wykrywanie anomalii w Pythonie

Wąsy

Kolejny wykres pudełkowy z dodatkowymi adnotacjami: mediana, przykładowa wartość odstająca, dolna i górna granica wartości odstających.

Wykrywanie anomalii w Pythonie

Rozstęp ćwiartkowy (IQR)

  • IQR – rozstęp ćwiartkowy (ang. Inter Quartile Range)
  • IQR = Q3 - Q1
  • Długość wąsów – kombinacja IQR i współczynnika

Ten sam wykres pudełkowy co na poprzednim slajdzie, ale mniejszy.

Wykrywanie anomalii w Pythonie

Obliczanie długości wąsów

  • Współczynnik = 1.5
  • Dolna granica: $Q1 - 1.5 * IQR$
  • Górna granica: $Q3 + 1.5 * IQR$

Ten sam wykres pudełkowy co na poprzednim slajdzie.

Wykrywanie anomalii w Pythonie

Rysowanie wykresów pudełkowych

import matplotlib.pyplot as plt

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

Wykres pudełkowy sprzedaży produktów z wieloma wartościami odstającymi tworzącymi czarną linię powyżej górnej granicy.

Wykrywanie anomalii w Pythonie

Kontrolowanie długości wąsów

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

Wykres pudełkowy sprzedaży produktów z mniejszą liczbą wartości odstających powyżej górnego wąsa.

Wykrywanie anomalii w Pythonie

IQR w kodzie

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


# Calculate IQR IQR = q3 - q1 # Set Multiplying factor factor = 2.5
Wykrywanie anomalii w Pythonie

Wykrywanie wartości odstających za pomocą 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
Wykrywanie anomalii w Pythonie

Elastyczność metody

  • Wykresy pudełkowe i filtrowanie IQR oferują dużą elastyczność
  • Umożliwiają tworzenie niestandardowych reguł oznaczania wartości odstających
Wykrywanie anomalii w Pythonie

Czas na ćwiczenia!

Wykrywanie anomalii w Pythonie

Preparing Video For Download...