Cách bạn phát hiện và xử lý các giá trị ngoại lệ trong dữ liệu của mình bằng Python?

Xin chào độc giả. Trong loạt bài Xử lý và phân tích dữ liệu của chúng tôi, hôm nay chúng ta sẽ xem xét Phát hiện và loại bỏ các giá trị ngoại lai trong Python

Vì vậy, chúng ta hãy bắt đầu

Ngoại lệ trong Python là gì?

Trước khi đi sâu vào khái niệm ngoại lệ, chúng ta hãy hiểu nguồn gốc của dữ liệu thô

Dữ liệu thô được cung cấp cho hệ thống thường được tạo từ các cuộc khảo sát và trích xuất dữ liệu từ các hành động thời gian thực trên web. Điều này có thể làm phát sinh các biến thể trong dữ liệu và có khả năng xảy ra lỗi đo lường trong khi ghi dữ liệu

Đây là khi các ngoại lệ xuất hiện

Điểm ngoại lệ là một điểm hoặc tập hợp các điểm dữ liệu nằm cách xa phần còn lại của các giá trị dữ liệu của tập dữ liệu. Nghĩa là, đó là [các] điểm dữ liệu xuất hiện cách xa phân phối tổng thể của các giá trị dữ liệu trong tập dữ liệu

Ngoại lệ chỉ có thể có trong các giá trị liên tục. Do đó, việc phát hiện và loại bỏ các ngoại lệ chỉ áp dụng cho các giá trị hồi quy

Về cơ bản, các ngoại lệ dường như khác với phân phối tổng thể phù hợp và có cấu trúc tốt của các phần tử dữ liệu. Nó có thể được coi là một phân phối bất thường xuất hiện cách xa lớp hoặc quần thể

Đã hiểu khái niệm về Ngoại lệ, bây giờ chúng ta hãy tập trung vào sự cần thiết của việc loại bỏ các ngoại lệ trong phần tiếp theo

Tại sao cần phải loại bỏ các ngoại lệ khỏi dữ liệu?

Như đã thảo luận ở trên, các giá trị ngoại lệ là các điểm dữ liệu nằm cách xa phân phối dữ liệu thông thường và gây ra các tác động bên dưới đối với phân phối dữ liệu tổng thể

  • Ảnh hưởng đến sự thay đổi tiêu chuẩn tổng thể của dữ liệu
  • Thao tác trung bình tổng thể của dữ liệu
  • Chuyển đổi dữ liệu sang dạng lệch
  • Nó gây ra sai lệch trong ước tính độ chính xác của mô hình học máy
  • Ảnh hưởng đến phân phối và thống kê của tập dữ liệu

Vì những lý do trên, cần phải phát hiện và loại bỏ các ngoại lệ trước khi lập mô hình tập dữ liệu

Phát hiện ngoại lệ – phương pháp IQR

Các ngoại lệ trong tập dữ liệu có thể được phát hiện bằng các phương pháp dưới đây

  • điểm Z
  • Điểm phân tán
  • Khoảng tứ phân vị [IQR]

Trong bài viết này, chúng tôi sẽ thực hiện phương pháp IQR để phát hiện và xử lý các giá trị ngoại lệ

IQR là viết tắt của Khoảng tứ phân vị. Nó đo lường sự phân tán thống kê của các giá trị dữ liệu như một thước đo phân phối tổng thể

IQR tương đương với sự khác biệt giữa phần tư thứ nhất [Q1] và phần tư thứ ba [Q3] tương ứng

Ở đây, Q1 đề cập đến phần tư thứ nhất i. e. 25% và quý 3 đề cập đến phần tư thứ ba i. e. 75%

Chúng tôi sẽ sử dụng Boxplots để phát hiện và trực quan hóa các ngoại lệ có trong bộ dữ liệu

Boxplots mô tả sự phân phối dữ liệu theo các phần tư và bao gồm các thành phần sau–

  • Q1-25%
  • Q2-50%
  • Q3-75%
  • Giới hạn dưới/râu
  • Râu trên / giới hạn

HộpÂm mưu

Bất kỳ điểm dữ liệu nào nằm dưới giới hạn dưới và trên giới hạn trên đều được coi là Ngoại lệ

Bây giờ chúng ta hãy triển khai Boxplot để phát hiện các ngoại lệ trong ví dụ bên dưới

Thí dụ

Ban đầu, chúng tôi đã nhập bộ dữ liệu vào môi trường. Bạn có thể tìm thấy tập dữ liệu ở đây

import pandas
import numpy
BIKE = pandas.read_csv["Bike.csv"]

Hơn nữa, chúng tôi đã tách các biến thành các giá trị số và phân loại

numeric_col = ['temp','hum','windspeed']
categorical_col = ['season', 'yr', 'mnth', 'holiday', 'weekday', 'workingday', 'weathersit']

Chúng tôi áp dụng Boxplot bằng cách sử dụng boxplot[] function trên các biến số như hình bên dưới

BIKE.boxplot[numeric_col]

Phát hiện ngoại lệ-BoxPlot

Như đã thấy ở trên, biến 'tốc độ gió' chứa các ngoại lệ nằm trên giới hạn dưới

Loại bỏ các ngoại lệ

Bây giờ là lúc để xử lý các ngoại lệ mà chúng tôi đã phát hiện bằng Boxplot trong phần trước

Sử dụng IQR, chúng ta có thể làm theo phương pháp dưới đây để thay thế các giá trị ngoại lệ bằng giá trị NULL

  • Tính phần tư thứ nhất và thứ ba [Q1 và Q3]
  • Hơn nữa, đánh giá phạm vi liên vùng, IQR = Q3-Q1
  • Ước lượng cận dưới, cận dưới = Q1*1. 5
  • Ước lượng cận trên, cận trên = Q3*1. 5
  • Thay thế các điểm dữ liệu nằm ngoài cận dưới và cận trên bằng giá trị NULL

for x in ['windspeed']:
    q75,q25 = np.percentile[BIKE.loc[:,x],[75,25]]
    intr_qr = q75-q25

    max = q75+[1.5*intr_qr]
    min = q25-[1.5*intr_qr]

    BIKE.loc[BIKE[x] < min,x] = np.nan
    BIKE.loc[BIKE[x] > max,x] = np.nan

Vì vậy, chúng tôi đã sử dụng

numeric_col = ['temp','hum','windspeed']
categorical_col = ['season', 'yr', 'mnth', 'holiday', 'weekday', 'workingday', 'weathersit']
0 để tính toán các giá trị của Q1 và Q3. Hơn nữa, chúng tôi đã thay thế các ngoại lệ bằng
numeric_col = ['temp','hum','windspeed']
categorical_col = ['season', 'yr', 'mnth', 'holiday', 'weekday', 'workingday', 'weathersit']
1 làm giá trị NULL

Đã thay thế các ngoại lệ bằng nan, bây giờ chúng ta hãy kiểm tra tổng các giá trị null hoặc các giá trị bị thiếu bằng mã bên dưới

BIKE.isnull[].sum[]

Tổng số giá trị NULL/giá trị ngoại lệ trong mỗi cột của tập dữ liệu

season        0
yr            0
mnth          0
holiday       0
weathersit    0
temp          0
hum           0
windspeed     5
cnt           0
dtype: int64

Bây giờ, chúng ta có thể sử dụng bất kỳ kỹ thuật nào dưới đây để xử lý các giá trị NULL

  • Áp đặt các giá trị còn thiếu bằng các giá trị quy định Mean, median hoặc Knn
  • Bỏ các giá trị null [nếu tỷ lệ tương đối ít hơn]

Ở đây, chúng tôi sẽ loại bỏ các giá trị null bằng cách sử dụng hàm

numeric_col = ['temp','hum','windspeed']
categorical_col = ['season', 'yr', 'mnth', 'holiday', 'weekday', 'workingday', 'weathersit']
2

BIKE = BIKE.dropna[axis = 0]

Đã xử lý các ngoại lệ, bây giờ chúng ta hãy kiểm tra sự hiện diện của các giá trị bị thiếu hoặc null trong tập dữ liệu

BIKE.isnull[].sum[]

Đầu ra–

season        0
yr            0
mnth          0
holiday       0
weathersit    0
temp          0
hum           0
windspeed     0
cnt           0
dtype: int64

Do đó, tất cả các ngoại lệ có trong tập dữ liệu đã được phát hiện và xử lý [loại bỏ]

Phần kết luận

Đến đây, chúng ta đã đi đến cuối chủ đề này. Vui lòng bình luận bên dưới, trong trường hợp bạn gặp bất kỳ câu hỏi nào

Làm cách nào để phát hiện các ngoại lệ trong Python?

Sử dụng IQR .
Sắp xếp dữ liệu theo thứ tự tăng dần
Tính phần tư đầu tiên [q1] và phần tư thứ ba [q3]
Tìm phạm vi liên vùng [q3-q1]
Tìm cận dưới q1*1. 5
Tìm cận trên q3*1. 5
Bất cứ điều gì nằm ngoài giới hạn dưới và trên là một ngoại lệ

Cách bạn phát hiện và xử lý các giá trị ngoại lai trong dữ liệu của mình?

5 cách xử lý các giá trị ngoại lệ trong dữ liệu .
Thiết lập bộ lọc trong công cụ kiểm tra của bạn. Mặc dù điều này có một chút chi phí, nhưng việc lọc ra các giá trị ngoại lai là xứng đáng. .
Loại bỏ hoặc thay đổi các ngoại lệ trong quá trình phân tích sau kiểm tra. .
Thay đổi giá trị của ngoại lệ. .
Xem xét phân phối cơ bản. .
Xem xét giá trị của các ngoại lệ nhẹ

Làm thế nào để phát hiện các ngoại lệ trong gấu trúc?

Một cách tiếp cận để phát hiện giá trị ngoại lệ là đặt giới hạn dưới thành ba độ lệch chuẩn dưới giá trị trung bình [μ - 3*σ] và giới hạn trên cho ba độ lệch chuẩn trên giá trị trung bình [μ + 3*σ]. Bất kỳ điểm dữ liệu nào nằm ngoài phạm vi này đều được phát hiện là ngoại lệ

Phương pháp nào được sử dụng để phát hiện các giá trị ngoại lệ?

Phương pháp điểm Z . Phương pháp này thường được sử dụng khi phân phối của một biến gần với Gaussian. Điểm Z là số độ lệch chuẩn mà giá trị của một biến cách xa biến đó' nghĩa là.

Chủ Đề