Pengodean kolom kategorikal II: OneHotEncoder
Baik — kini kolom kategorial Anda sudah dikodekan secara numerik. Bisakah Anda lanjut menggunakan pipeline dan XGBoost? Belum! Pada kolom kategorial himpunan data ini, tidak ada urutan alami antar entri. Sebagai contoh: Dengan LabelEncoder, Neighborhood bernilai CollgCr dikodekan menjadi 5, Neighborhood bernilai Veenker menjadi 24, dan Crawfor menjadi 6. Apakah Veenker “lebih besar” daripada Crawfor dan CollgCr? Tidak — dan membiarkan model mengasumsikan adanya urutan alami dapat menurunkan kinerja.
Karena itu, masih ada satu langkah lagi: Anda perlu menerapkan one-hot encoding untuk membuat variabel biner atau “dummy”. Anda dapat melakukannya dengan OneHotEncoder dari scikit-learn.
Latihan ini adalah bagian dari kursus
Extreme Gradient Boosting dengan XGBoost
Petunjuk latihan
- Impor
OneHotEncoderdarisklearn.preprocessing. - Instansiasi objek
OneHotEncoderbernamaohe. Tentukan argumen kata kuncisparse=False. - Gunakan metode
.fit_transform()untuk menerapkanOneHotEncoderpadadfdan simpan hasilnya sebagaidf_encoded. Keluaran akan berupa array NumPy. - Cetak 5 baris pertama
df_encoded, lalu bentuk (shape) daridfsertadf_encodeduntuk membandingkan perbedaannya.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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)