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à Crawfor là 6. Liệu Veenker có “lớn hơn” Crawfor và CollgCr 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
Hướng dẫn bài tập
- Import
OneHotEncodertừsklearn.preprocessing. - Khởi tạo một đối tượng
OneHotEncodertên làohe. Chỉ định tham sốsparse=False. - Dùng phương thức
.fit_transform()để áp dụngOneHotEncoderlêndfvà lưu kết quả vàodf_encoded. Đầu ra sẽ là một mảng NumPy. - In 5 dòng đầu của
df_encoded, sau đó in shape củadfcũ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)