상자 그림과 IQR

Python으로 배우는 이상치 탐지

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

상자 그림 복습

  • 상자 그림:
    • 5-수치 요약의 향상된 시각화본
    • 데이터의 위치, 분산, 왜도를 표시
    • 이상치 존재를 나타냄

주석이 달린 예시 상자 그림.

Python으로 배우는 이상치 탐지

상자 그림 구성 요소

25번째, 75번째 백분위수와 상자가 화살표와 텍스트로 표시된 상자 그림.

Python으로 배우는 이상치 탐지

수염(Whiskers)

더 많은 구성 요소에 주석이 달린 또 다른 상자 그림: 중앙값, 샘플 이상치, 하한/상한 이상치 한계.

Python으로 배우는 이상치 탐지

사분위 범위(IQR)

  • IQR - 사분위 범위
  • 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 계산

# 백분위수 계산
q1 = sales.quantile(0.25)
q3 = sales.quantile(0.75)


# IQR 계산 IQR = q3 - q1 # 곱셈 계수 설정 factor = 2.5
Python으로 배우는 이상치 탐지

IQR로 이상치 찾기

# 한계 계산
lower_limit = q1 - (IQR * factor)


upper_limit = q3 + (IQR * factor)
# 마스크 생성
is_lower = sales < lower_limit
is_upper = sales > upper_limit


# 필터링 outliers = sales[is_lower | is_upper] # 이상치 개수 출력 print(len(outliers))
29
Python으로 배우는 이상치 탐지

방법의 유연성

  • 상자 그림과 IQR 필터링은 매우 유연합니다
  • 이상치 표시 규칙을 맞춤 정의할 수 있습니다
Python으로 배우는 이상치 탐지

Laten we oefenen!

Python으로 배우는 이상치 탐지

Preparing Video For Download...