Kategorik sütunları kodlama II: OneHotEncoder
Tamam — kategorik sütunlarını sayısal olarak kodladın. Peki şimdi pipeline'lar ve XGBoost kullanmaya geçebilir misin? Henüz değil! Bu veri kümesindeki kategorik sütunlarda girişler arasında doğal bir sıralama yok. Örneğin: LabelEncoder kullanıldığında, Neighborhood içinde CollgCr 5, Veenker 24, Crawfor ise 6 olarak kodlandı. Veenker, Crawfor ve CollgCr'dan "daha büyük" mü? Hayır — modelin böyle doğal bir sıralama varsaymasına izin vermek performansı düşürebilir.
Bu nedenle bir adım daha gerekli: İkili, yani "dummy" değişkenler oluşturmak için one-hot encoding uygulamalısın. Bunu scikit-learn'ün OneHotEncoder sınıfını kullanarak yapabilirsin.
Bu egzersiz
XGBoost ile Aşırı Gradyan Artırma
kursunun bir parçasıdırEgzersiz talimatları
sklearn.preprocessingiçindenOneHotEncoder'ı içe aktar.oheadlı birOneHotEncodernesnesi oluştur.sparse=Falseanahtar argümanını belirt..fit_transform()metodunu kullanarakOneHotEncoder'ıdfüzerinde uygula ve çıktıyıdf_encodedolarak kaydet. Çıktı bir NumPy dizisi olacaktır.df_encoded'ın ilk 5 satırını yazdır ve ardından farkı karşılaştırmak için hemdf'in hem dedf_encoded'ın şeklini (shape) yazdır.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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)