Boxplot và IQR

Phát hiện bất thường với Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Ôn tập boxplot

  • Boxplot:
    • Là phiên bản trực quan của tóm tắt 5 số
    • Thể hiện vị trí, độ phân tán, độ lệch của dữ liệu
    • Chỉ ra sự hiện diện của ngoại lệ

Một boxplot mẫu có chú thích.

Phát hiện bất thường với Python

Thành phần của boxplot

Một boxplot với phần trăm 25, 75 và hộp được chú thích bằng mũi tên và văn bản.

Phát hiện bất thường với Python

Ria (whiskers)

Một boxplot khác có chú thích thêm: trung vị, một ngoại lệ mẫu, giới hạn ngoại lệ dưới và trên.

Phát hiện bất thường với Python

Khoảng tứ phân vị (IQR)

  • IQR - Khoảng tứ phân vị
  • IQR = Q3 - Q1
  • Độ dài ria = kết hợp IQR và hệ số

Cùng boxplot như trang trước nhưng nhỏ hơn.

Phát hiện bất thường với Python

Tính độ dài ria

  • Hệ số = 1.5
  • Giới hạn dưới: $Q1 - 1.5 * IQR$
  • Giới hạn trên: $Q3 + 1.5 * IQR$

Cùng boxplot như ở trang trước.

Phát hiện bất thường với Python

Vẽ boxplot

import matplotlib.pyplot as plt

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

Boxplot doanh số sản phẩm với nhiều ngoại lệ tạo thành một đường đen phía trên giới hạn ngoại lệ trên.

Phát hiện bất thường với Python

Điều chỉnh độ dài ria

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

Boxplot doanh số sản phẩm với ít ngoại lệ hơn phía trên ria trên.

Phát hiện bất thường với Python

IQR trong mã

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


# Calculate IQR IQR = q3 - q1 # Set Multiplying factor factor = 2.5
Phát hiện bất thường với Python

Tìm ngoại lệ bằng 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
Phát hiện bất thường với Python

Tính linh hoạt của phương pháp

  • Boxplot và lọc bằng IQR rất linh hoạt
  • Cho phép tạo quy tắc tùy chỉnh để đánh dấu ngoại lệ
Phát hiện bất thường với Python

Ayo berlatih!

Phát hiện bất thường với Python

Preparing Video For Download...