Mã hóa thứ bậc cho DataFrame
Các đặc trưng kiểu phân loại có thể được mã hóa bằng hai kỹ thuật: one-hot encoding và ordinal encoding. Với one-hot encoding, mỗi hạng mục trở thành một cột; với mỗi hàng, cột ứng với hạng mục đó có giá trị 1, các cột còn lại là 0. Với ordinal encoding, các hạng mục được ánh xạ thành các giá trị nguyên bắt đầu từ 0 đến số lượng hạng mục.
Trong bài tập này, bạn sẽ lặp qua tất cả các cột trong DataFrame users để mã hóa thứ bậc các hạng mục. Bạn cũng sẽ lưu một encoder cho từng cột trong từ điển ordinal_enc_dict để có thể chuyển các cột đã mã hóa về lại hạng mục gốc.
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
- Khai báo một từ điển rỗng
ordinal_enc_dict. - Tạo một đối tượng Ordinal Encoder cho mỗi cột.
- Chọn các giá trị khác null của cột trong users và mã hóa chúng.
- Gán lại các giá trị đã mã hóa vào các giá trị khác null của từng cột (
col_name) trong users.
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 an empty dictionary ordinal_enc_dict
ordinal_enc_dict = ___
for col_name in users:
# Create Ordinal encoder for col
ordinal_enc_dict[col_name] = ___
col = users[col_name]
# Select non-null values of col
col_not_null = ___
reshaped_vals = col_not_null.values.reshape(-1, 1)
encoded_vals = ordinal_enc_dict[col_name].fit_transform(reshaped_vals)
# Select the non-null values for the column col_name in users and store the encoded values
users.loc[___, ___] = np.squeeze(encoded_vals)