Trong thống kê, phạm vi liên vùng cho biết nửa giữa của phân phối tập dữ liệu. Các phần tư phân chia bất kỳ phân phối nào được sắp xếp từ thấp đến cao thành bốn phần bằng nhau. Phạm vi liên vùng, hoặc IQR, chứa phần tư thứ hai và thứ ba hoặc nửa giữa của tập dữ liệu
Có bốn bước để xác định IQR, được liệt kê bên dưới
- Sắp xếp dữ liệu
- Tính Q1 và Q3
- IQR = Q3 — Q1
- Tìm hàng rào thấp hơn, là Q1 — [1. 5*IQR]
- Tìm hàng rào phía trên, là Q3 + [1. 5*IQR]
Tôi đã tạo một tập lệnh bằng Google Colab, một Sổ tay Jupyter trực tuyến miễn phí cho phép mọi người viết chương trình bằng Python
Khi tôi đã tạo Jupyter Notebook, tôi đã nhập các thư viện mà tôi cần để chạy nó. Các thư viện tôi đã nhập là. -
- Numpy để thực hiện các phép tính toán học và tạo mảng NumPy,
- Pandas để tạo và thao tác các khung dữ liệu,
- Matplotlib để vẽ các điểm dữ liệu trên biểu đồ và
- Seaborn để thực hiện các chức năng đồ họa thống kê
Trong đầu ra ở trên, các vòng tròn biểu thị các ngoại lệ và có nhiều. Cũng có thể xác định các ngoại lệ bằng cách sử dụng nhiều biến. Chúng ta có thể sửa đổi đoạn mã trên để trực quan hóa các ngoại lệ trong biến 'Khoản_vay' theo trạng thái phê duyệt
1 [600, 6]
2
3 RangeIndex: 600 entries, 0 to 599
4 Data columns [total 6 columns]:
5 Income 600 non-null int64
6 Loan_amount 600 non-null int64
7 Term_months 600 non-null int64
8 Credit_score 600 non-null int64
9 approval_status 600 non-null int64
10 Age 600 non-null int64
11 dtypes: int64[6]
12 memory usage: 28.2 KB
13 None
1con trăn
đầu ra
Kết quả cho thấy số lượng ngoại lệ cao hơn đối với những người đăng ký khoản vay được phê duyệt [được biểu thị bằng nhãn '1'] so với những người đăng ký bị từ chối [được biểu thị bằng nhãn '0']
2. Biểu đồ
Một biểu đồ được sử dụng để trực quan hóa phân phối của một biến số. Một ngoại lệ sẽ xuất hiện bên ngoài mô hình phân phối tổng thể. Dòng mã bên dưới vẽ biểu đồ tần suất của biến 'Thu nhập', sử dụng hàm hist[]
1 [600, 6]
2
3 RangeIndex: 600 entries, 0 to 599
4 Data columns [total 6 columns]:
5 Income 600 non-null int64
6 Loan_amount 600 non-null int64
7 Term_months 600 non-null int64
8 Credit_score 600 non-null int64
9 approval_status 600 non-null int64
10 Age 600 non-null int64
11 dtypes: int64[6]
12 memory usage: 28.2 KB
13 None
2con trăn
đầu ra
Biểu đồ trên cho thấy phân phối bị lệch phải và có các giá trị cực cao hơn ở bên phải của biểu đồ. Bước này cũng có thể được lặp lại cho các biến khác
3. biểu đồ phân tán
Biểu đồ phân tán trực quan hóa mối quan hệ giữa hai biến định lượng. Dữ liệu được hiển thị dưới dạng tập hợp các điểm và bất kỳ điểm nào nằm ngoài cụm chung của hai biến có thể biểu thị các giá trị ngoại lệ. Các dòng mã bên dưới tạo ra một biểu đồ phân tán giữa các biến 'Thu nhập' và 'Số_tiền_vay'
1 [600, 6]
2
3 RangeIndex: 600 entries, 0 to 599
4 Data columns [total 6 columns]:
5 Income 600 non-null int64
6 Loan_amount 600 non-null int64
7 Term_months 600 non-null int64
8 Credit_score 600 non-null int64
9 approval_status 600 non-null int64
10 Age 600 non-null int64
11 dtypes: int64[6]
12 memory usage: 28.2 KB
13 None
3con trăn
đầu ra
Biểu đồ trên chỉ ra rằng hầu hết các điểm dữ liệu được nhóm ở nửa dưới của biểu đồ. Các điểm nằm ở cực bên phải của trục x hoặc trục y biểu thị các giá trị ngoại lệ
Đối xử ngoại lệ
Trong các phần trước, chúng ta đã tìm hiểu về các kỹ thuật phát hiện ngoại lệ. Tuy nhiên, đây mới chỉ là một nửa nhiệm vụ. Một khi chúng tôi đã xác định được các ngoại lệ, chúng tôi cần xử lý chúng. Có một số kỹ thuật cho việc này và chúng tôi sẽ thảo luận về những kỹ thuật được sử dụng rộng rãi nhất bên dưới
Sàn và nắp dựa trên lượng tử
Trong kỹ thuật này, chúng tôi sẽ làm sàn [e. g. , phần trăm thứ 10] cho các giá trị thấp hơn và giới hạn [e. g. , phân vị thứ 90] cho các giá trị cao hơn. Các dòng mã bên dưới lần lượt in phần trăm thứ 10 và 90 của biến 'Thu nhập'. Các giá trị này sẽ được sử dụng cho sàn và nắp dựa trên lượng tử
1 [600, 6]
2
3 RangeIndex: 600 entries, 0 to 599
4 Data columns [total 6 columns]:
5 Income 600 non-null int64
6 Loan_amount 600 non-null int64
7 Term_months 600 non-null int64
8 Credit_score 600 non-null int64
9 approval_status 600 non-null int64
10 Age 600 non-null int64
11 dtypes: int64[6]
12 memory usage: 28.2 KB
13 None
4con trăn
đầu ra
1 [600, 6]
2
3 RangeIndex: 600 entries, 0 to 599
4 Data columns [total 6 columns]:
5 Income 600 non-null int64
6 Loan_amount 600 non-null int64
7 Term_months 600 non-null int64
8 Credit_score 600 non-null int64
9 approval_status 600 non-null int64
10 Age 600 non-null int64
11 dtypes: int64[6]
12 memory usage: 28.2 KB
13 None
5Bây giờ chúng tôi sẽ loại bỏ các ngoại lệ, như được hiển thị trong các dòng mã bên dưới. Cuối cùng, chúng tôi tính toán lại giá trị độ lệch, giá trị này hiện tốt hơn nhiều
1 [600, 6]
2
3 RangeIndex: 600 entries, 0 to 599
4 Data columns [total 6 columns]:
5 Income 600 non-null int64
6 Loan_amount 600 non-null int64
7 Term_months 600 non-null int64
8 Credit_score 600 non-null int64
9 approval_status 600 non-null int64
10 Age 600 non-null int64
11 dtypes: int64[6]
12 memory usage: 28.2 KB
13 None
6con trăn
đầu ra
1 [600, 6]
2
3 RangeIndex: 600 entries, 0 to 599
4 Data columns [total 6 columns]:
5 Income 600 non-null int64
6 Loan_amount 600 non-null int64
7 Term_months 600 non-null int64
8 Credit_score 600 non-null int64
9 approval_status 600 non-null int64
10 Age 600 non-null int64
11 dtypes: int64[6]
12 memory usage: 28.2 KB
13 None
7cắt tỉa
Trong phương pháp này, chúng tôi loại bỏ hoàn toàn các điểm dữ liệu ngoại lệ. Xem xét biến 'Tuổi', có giá trị nhỏ nhất là 0 và giá trị lớn nhất là 200. Dòng mã đầu tiên bên dưới tạo chỉ mục cho tất cả các điểm dữ liệu trong đó tuổi lấy hai giá trị này. Dòng thứ hai loại bỏ các hàng chỉ mục này khỏi dữ liệu, trong khi dòng mã thứ ba in thống kê tóm tắt cho biến
Sau khi cắt bớt, số lượng quan sát giảm từ 600 xuống 594 và các giá trị tối thiểu và tối đa được chấp nhận nhiều hơn
1 [600, 6]
2
3 RangeIndex: 600 entries, 0 to 599
4 Data columns [total 6 columns]:
5 Income 600 non-null int64
6 Loan_amount 600 non-null int64
7 Term_months 600 non-null int64
8 Credit_score 600 non-null int64
9 approval_status 600 non-null int64
10 Age 600 non-null int64
11 dtypes: int64[6]
12 memory usage: 28.2 KB
13 None
8con trăn
đầu ra
1 [600, 6]
2
3 RangeIndex: 600 entries, 0 to 599
4 Data columns [total 6 columns]:
5 Income 600 non-null int64
6 Loan_amount 600 non-null int64
7 Term_months 600 non-null int64
8 Credit_score 600 non-null int64
9 approval_status 600 non-null int64
10 Age 600 non-null int64
11 dtypes: int64[6]
12 memory usage: 28.2 KB
13 None
9Điểm IQR
Kỹ thuật này sử dụng điểm IQR được tính toán trước đó để loại bỏ các giá trị ngoại lai. Nguyên tắc chung là mọi thứ không nằm trong khoảng [Q1 - 1. 5 IQR] và [Q3 + 1. 5 IQR] là ngoại lệ và có thể bị xóa. Dòng mã đầu tiên bên dưới loại bỏ các ngoại lệ dựa trên phạm vi IQR và lưu kết quả vào khung dữ liệu 'df_out'. Dòng thứ hai in ra hình dạng của dữ liệu này, kết quả là 375 quan sát của 6 biến. Điều này cho thấy rằng đối với dữ liệu của chúng tôi, rất nhiều bản ghi sẽ bị xóa nếu chúng tôi sử dụng phương pháp IQR
1df.describe[]
0con trăn
đầu ra
1df.describe[]
1Chuyển đổi nhật ký
Việc chuyển đổi các biến bị lệch cũng có thể giúp điều chỉnh phân phối của các biến. Đây có thể là các phép biến đổi logarit, căn bậc hai hoặc bình phương. Phổ biến nhất là phép biến đổi logarit, được thực hiện trên biến 'Khoản_vay' trong dòng mã đầu tiên bên dưới. Dòng mã thứ hai và thứ ba in giá trị độ lệch trước và sau khi chuyển đổi
1df.describe[]
2con trăn
đầu ra
1df.describe[]
3Đầu ra ở trên cho thấy giá trị độ lệch giảm từ 2. 8 đến -0. 18, xác nhận rằng phân phối đã được xử lý cho các giá trị cực trị
Thay thế các ngoại lệ bằng các giá trị trung bình
Trong kỹ thuật này, chúng tôi thay thế các giá trị cực đoan bằng các giá trị trung bình. Không nên sử dụng các giá trị trung bình vì chúng bị ảnh hưởng bởi các giá trị ngoại lệ. Dòng mã đầu tiên bên dưới in giá trị phần trăm thứ 50 hoặc giá trị trung bình, có giá trị là 140. Dòng thứ hai in giá trị phần trăm thứ 95, xuất hiện vào khoảng 326. Dòng mã thứ ba bên dưới thay thế tất cả các giá trị đó trong biến 'Số_khoản_vay', lớn hơn phân vị thứ 95, bằng giá trị trung bình. Cuối cùng, dòng thứ tư in số liệu thống kê tóm tắt sau khi tất cả các kỹ thuật này đã được sử dụng để xử lý ngoại lệ
1df.describe[]
4con trăn
đầu ra
1df.describe[]
5Sự kết luận
Trong hướng dẫn này, bạn đã học các phương pháp xác định giá trị ngoại lai bằng cách sử dụng cả kỹ thuật định lượng và trực quan. Bạn cũng đã học các kỹ thuật để xử lý các ngoại lệ đã xác định. Việc bạn sử dụng các kỹ thuật này sẽ phụ thuộc vào dữ liệu, tuyên bố vấn đề và thuật toán máy học được chọn để xây dựng mô hình
Để tìm hiểu thêm về cách chuẩn bị dữ liệu và xây dựng mô hình học máy bằng Python, vui lòng tham khảo các hướng dẫn sau