Kategorik sütunları kodlama I: LabelEncoder
Artık konut verilerini XGBoost için hazır hale getirmek için neler yapman gerektiğini gördüğüne göre, süreci adım adım uygulayalım.
Önce eksik değerleri doldurman gerekiyor — daha önce gördüğün gibi LotFrontage sütununda çok sayıda eksik değer var. Sonra, veri kümesindeki kategorik sütunları sayısal olarak kodlanmaları için one-hot encoding kullanarak dönüştürmen gerekecek. Fikri hatırlamak istersen Supervised Learning with scikit-learn kursundaki bu videoya göz atabilirsin.
Veride beş kategorik sütun var: MSZoning, PavedDrive, Neighborhood, BldgType ve HouseStyle. Scikit-learn, her kategorik sütundaki değerleri tamsayılara dönüştüren bir LabelEncoder fonksiyonuna sahip. Bunu burada kullanmayı pratik edeceksin.
Bu egzersiz
XGBoost ile Aşırı Gradyan Artırma
kursunun bir parçasıdırEgzersiz talimatları
sklearn.preprocessingiçindenLabelEncoder'ı içe aktar..fillna()kullanarakLotFrontagesütunundaki eksik değerleri0ile doldur.- Kategorik sütunlar için bir boolean maske oluştur. Bunu,
df.dtypes'ınobjecta eşit olup olmadığını kontrol ederek yapabilirsin. - Bir
LabelEncodernesnesi oluştur. Bunu, herhangi bir scikit-learn tahmin edicisini başlattığın şekilde yapabilirsin. LabelEncoder()kullanarak tüm kategorik sütunları tamsayılara kodla. Bunu yapmak için, verilen lambda fonksiyonundalenesnesinin.fit_transform()metodunu kullan.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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())