MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

  • Impor OneHotEncoder dari sklearn.preprocessing.
  • Instansiasi objek OneHotEncoder bernama ohe. Tentukan argumen kata kunci sparse=False.
  • Gunakan metode .fit_transform() untuk menerapkan OneHotEncoder pada df dan simpan hasilnya sebagai df_encoded. Keluaran akan berupa array NumPy.
  • Cetak 5 baris pertama df_encoded, lalu bentuk (shape) dari df serta df_encoded untuk 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)
Edit dan Jalankan Kode