MulaiMulai sekarang secara gratis

Mengodekan kolom kategorikal I: LabelEncoder

Sekarang setelah Anda melihat apa saja yang perlu dilakukan agar data perumahan siap untuk XGBoost, mari kita jalani prosesnya selangkah demi selangkah.

Pertama, Anda perlu mengisi nilai yang hilang—seperti yang Anda lihat sebelumnya, kolom LotFrontage memiliki banyak nilai hilang. Lalu, Anda perlu mengodekan semua kolom kategorikal dalam himpunan data menggunakan one-hot encoding agar nilainya direpresentasikan secara numerik. Anda dapat menonton video ini dari Supervised Learning with scikit-learn sebagai pengingat konsep tersebut.

Data memiliki lima kolom kategorikal: MSZoning, PavedDrive, Neighborhood, BldgType, dan HouseStyle. Scikit-learn memiliki fungsi LabelEncoder yang mengonversi nilai pada setiap kolom kategorikal menjadi bilangan bulat. Anda akan berlatih menggunakannya di sini.

Latihan ini adalah bagian dari kursus

Extreme Gradient Boosting dengan XGBoost

Lihat Kursus

Petunjuk latihan

  • Impor LabelEncoder dari sklearn.preprocessing.
  • Isi nilai yang hilang pada kolom LotFrontage dengan 0 menggunakan .fillna().
  • Buat mask boolean untuk kolom kategorikal. Anda dapat melakukannya dengan memeriksa apakah df.dtypes sama dengan object.
  • Buat objek LabelEncoder. Anda dapat melakukannya dengan cara yang sama seperti menginstansiasi estimator scikit-learn lainnya.
  • Kodekan semua kolom kategorikal menjadi bilangan bulat menggunakan LabelEncoder(). Untuk melakukannya, gunakan metode .fit_transform() dari le dalam fungsi lambda yang disediakan.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# Import LabelEncoder
____

# Fill missing values with 0
df.LotFrontage = ____

# Create a boolean mask for categorical columns
categorical_mask = (____ == ____)

# Get list of categorical column names
categorical_columns = df.columns[categorical_mask].tolist()

# Print the head of the categorical columns
print(df[categorical_columns].head())

# Create LabelEncoder object: le
le = ____

# Apply LabelEncoder to categorical columns
df[categorical_columns] = df[categorical_columns].apply(lambda x: ____(x))

# Print the head of the LabelEncoded categorical columns
print(df[categorical_columns].head())
Edit dan Jalankan Kode