Düşük Gözleme Sahip Sütunları Kaldırma
Bolca özellik mühendisliği yaptıktan sonra bir adım geri çekilip ne oluşturduğuna bakmak iyi bir fikirdir. Kategorik özelliklerinde explode veya OneHot Encoding gibi bazı otomasyon tekniklerini kullandıysan, şimdi yüzlerce yeni ikili özellik elde etmiş olabilirsin. Özellik seçimi başlı başına başka bir dersin konusu olsa da, veri kümenin boyutunu azaltmak için atabileceğin bazı hızlı adımlar var.
Bu egzersizde, 30 gözlemden az olan sütunları kaldıracağız. 30, istatistiksel anlamlılık için yaygın bir alt sınırdır. Bundan daha azı olduğunda, ilişkiler salt tesadüften aşırı uyumlamaya yol açabilir!
NOT: Veriler df veri çerçevesinde (dataframe) mevcuttur.
Bu egzersiz, kursun bir parçasıdır
PySpark ile Özellik Mühendisliği
Egzersiz talimatları
- İkili sütunlar listesini dolaşan verilen
fordöngüsünü kullanarak, sütundaki değerlerinsumdeğeriniaggfonksiyonuyla hesapla. Hesabı hemen çalıştırmak içincollect()kullan ve sonucuobs_countdeğişkenine kaydet. obs_countileobs_thresholddeğerlerini karşılaştır;ififadesi,obs_countobs_thresholddeğerinden küçük ya da ona eşit olduğunda doğru olmalıdır.cols_to_removelistesine eklenmiş sütunlarıdrop()kullanarak kaldır.*operatörünün listenin açılmasını (unpack) sağladığını unutma.- PySpark veri çerçevelerinin başlangıç ve bitiş şeklini, kayıt sayısı için
count()ve sütun sayısını bulmak içindf.columnsveyanew_df.columnsüzerindelen()kullanarak yazdır.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
obs_threshold = 30
cols_to_remove = list()
# Inspect first 10 binary columns in list
for col in binary_cols[0:10]:
# Count the number of 1 values in the binary column
obs_count = df.____({col: ____}).____()[0][0]
# If less than our observation threshold, remove
if ____ ____ ____:
cols_to_remove.append(col)
# Drop columns and print starting and ending dataframe shapes
new_df = df.____(*____)
print('Rows: ' + str(df.____()) + ' Columns: ' + str(____(df.____)))
print('Rows: ' + str(new_df.____()) + ' Columns: ' + str(____(new_df.____)))