Mã hóa thứ bậc cho một cột phân loại
Việc bù khuyết giá trị phân loại cần thêm vài bước so với bù khuyết giá trị số. Trước hết, bạn cần chuyển chúng thành giá trị số vì không thể thực hiện các phép toán thống kê trên chuỗi ký tự.
Bạn sẽ dùng bộ dữ liệu hồ sơ người dùng, ghi nhận sở thích và lựa chọn của khách hàng tại một nhà hàng. Bộ dữ liệu này chỉ gồm các thuộc tính phân loại. Trong bài tập này, bạn sẽ chuyển cột phân loại 'ambience' thành dạng số bằng OrdinalEncoder từ sklearn. DataFrame đã được nạp sẵn dưới tên users. Hàm OrdinalEncoder() cũng đã được nạp.
head() và tail() của DataFrame users đã được in 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
- Tạo đối tượng ordinal encoder và gán vào
ambience_ord_enc. - Chọn các giá trị không thiếu của cột
'ambience'trongusers. - Đổi hình dạng
ambience_not_nullvề kích thước(-1, 1). - Thay thế các giá trị không thiếu của
ambiencebằng các giá trị đã được mã hóa.
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.
# Set col_name to 'ambience'
col_name = 'ambience'
# Create Ordinal encoder
ambience_ord_enc = ___
# Select non-null values of ambience column in users
ambience = users[col_name]
ambience_not_null = ___
# Reshape ambience_not_null to shape (-1, 1)
reshaped_vals = ___
# Select the non-null values for the column col_name in users and store the encoded values
encoded_vals = ambience_ord_enc.fit_transform(reshaped_vals)
users.loc[___, col_name] = np.squeeze(encoded_vals)