Bù khuyết cho biến phân loại bằng KNN
Khi tất cả các cột phân loại trong DataFrame đã được chuyển thành giá trị thứ bậc (ordinal), DataFrame đã sẵn sàng để bù khuyết. Bù khuyết bằng các mô hình thống kê như K-Nearest Neighbors (KNN) thường cho kết quả tốt hơn.
Trong bài tập này, bạn sẽ
- Dùng hàm
KNN()từfancyimputeđể bù các giá trị thiếu trong DataFrame đã mã hóa thứ bậcusers. - Chuyển các giá trị thứ bậc về lại nhãn phân loại ban đầu bằng phương thức
.inverse_transform()của bộ mã hóa thứ bậc.
Nhớ rằng, ordinal_enc_dict lưu OrdinalEncoder() của sklearn cho từng cột.
DataFrame users lưu các giá trị đã mã hóa (giá trị thứ bậc) cho mỗi cột.
Hàm KNN(), từ điển các OrdinalEncoder() ordinal_enc_dict và DataFrame users đã được nạp sẵn cho bạn.
Bài tập này là một phần của khóa học
Xử lý Dữ liệu Khuyết trong Python
Hướng dẫn bài tập
- Bù khuyết DataFrame
usersbằng phương thứcfit_transform()củaKNN_imputer. Làm tròn các giá trị đã biến đổi để thu được số nguyên. - Lặp qua các cột trong
users. - Chọn
OrdinalEncoder()của cột từordinal_enc_dictvà thực hiện.inverse_transform()trên mảng đã được đổi hình dạngreshaped.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Create KNN imputer
KNN_imputer = KNN()
# Impute 'users' DataFrame. It is rounded to get integer values
users_KNN_imputed.iloc[:, :] = np.round(___)
# Loop over the column names in 'users'
for col_name in ___:
# Reshape the column data
reshaped = users_KNN_imputed[col_name].values.reshape(-1, 1)
# Select the column's Encoder and perform inverse transform on 'reshaped'
users_KNN_imputed[col_name] = ___