Bắt đầu ngayBắt đầu miễn phí

Mã hóa cột phân loại II: OneHotEncoder

Ổn rồi — bạn đã mã hóa các cột phân loại thành số. Vậy có thể chuyển ngay sang dùng pipelines và XGBoost chưa? Chưa đâu! Ở các cột phân loại của bộ dữ liệu này, không có thứ tự tự nhiên giữa các giá trị. Ví dụ: Dùng LabelEncoder, Neighborhood CollgCr được mã hóa thành 5, còn Neighborhood Veenker thành 24, và Crawfor6. Liệu Veenker có “lớn hơn” CrawforCollgCr không? Không — và nếu để mô hình ngầm hiểu có thứ tự tự nhiên như vậy, hiệu suất có thể kém đi.

Vì thế, cần thêm một bước nữa: bạn phải áp dụng one-hot encoding để tạo các biến nhị phân ("dummy"). Bạn có thể làm điều này bằng OneHotEncoder của scikit-learn.

Bài tập này là một phần của khóa học

Gradient Boosting Cực Mạnh với XGBoost

Xem khóa học

Hướng dẫn bài tập

  • Import OneHotEncoder từ sklearn.preprocessing.
  • Khởi tạo một đối tượng OneHotEncoder tên là ohe. Chỉ định tham số sparse=False.
  • Dùng phương thức .fit_transform() để áp dụng OneHotEncoder lên df và lưu kết quả vào df_encoded. Đầu ra sẽ là một mảng NumPy.
  • In 5 dòng đầu của df_encoded, sau đó in shape của df cũng như df_encoded để so sánh sự khác biệt.

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.

# Import OneHotEncoder
____

# Create OneHotEncoder: ohe
ohe = ____

# Apply OneHotEncoder to categorical columns - output is no longer a dataframe: df_encoded
df_encoded = ____

# Print first 5 rows of the resulting dataset - again, this will no longer be a pandas dataframe
print(df_encoded[:5, :])

# Print the shape of the original DataFrame
print(df.shape)

# Print the shape of the transformed array
print(df_encoded.shape)
Chỉnh sửa và Chạy Mã