MulaiMulai sekarang secara gratis

Menghapus Kolom dengan Jumlah Observasi Rendah

Setelah banyak melakukan feature engineering, sebaiknya Anda meninjau kembali apa yang telah dibuat. Jika Anda menggunakan teknik otomatisasi pada fitur kategorikal seperti exploding atau OneHot Encoding, Anda mungkin mendapati sekarang ada ratusan fitur biner baru. Topik feature selection sendiri layak menjadi materi satu kursus tersendiri, namun ada beberapa langkah cepat yang dapat Anda lakukan untuk mengurangi dimensi himpunan data Anda.

Pada latihan ini, kita akan menghapus kolom yang memiliki kurang dari 30 observasi. Angka 30 sering digunakan sebagai jumlah minimum observasi untuk signifikansi statistik. Kurang dari itu, hubungan yang terbentuk cenderung menyebabkan overfitting karena kebetulan semata!

CATATAN: Data tersedia dalam dataframe, df.

Latihan ini adalah bagian dari kursus

Rekayasa Fitur dengan PySpark

Lihat Kursus

Petunjuk latihan

  • Dengan menggunakan for loop yang disediakan yang melakukan iterasi melalui daftar kolom biner, hitung sum dari nilai pada kolom menggunakan fungsi agg. Gunakan collect() untuk menjalankan perhitungan segera dan simpan hasilnya ke obs_count.
  • Bandingkan obs_count dengan obs_threshold; pernyataan if harus bernilai benar jika obs_count kurang dari atau sama dengan obs_threshold.
  • Hapus kolom yang telah ditambahkan ke daftar cols_to_remove dengan menggunakan drop(). Ingat bahwa tanda * memungkinkan daftar dibongkar (unpack).
  • Cetak bentuk awal dan akhir dari dataframe PySpark dengan menggunakan count() untuk jumlah rekaman dan len() pada df.columns atau new_df.columns untuk mengetahui jumlah kolom.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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.____)))
Edit dan Jalankan Kode