ПочатиПочніть безкоштовно

Видалення стовпців із малою кількістю спостережень

Після масштабного інженірингу ознак варто зробити паузу й подивитися, що ви створили. Якщо ви застосовували автоматизацію для категоріальних ознак, як-от «exploding» або OneHot Encoding, може виявитися, що тепер у вас сотні нових бінарних ознак. Тема відбору ознак заслуговує на окремий курс, але є кілька швидких кроків, які допоможуть зменшити розмірність набору даних.

У цій вправі ми приберемо стовпці, у яких менше ніж 30 спостережень. 30 — це поширений мінімум для статистичної значущості. Якщо менше, зв'язки можуть призвести до перенавчання просто через випадковий збіг!

ПРИМІТКА: Дані доступні в датафреймі df.

Ця вправа є частиною курсу

Опрацювання ознак у PySpark

Переглянути курс

Інструкції до вправи

  • Використайте наданий цикл for, що ітерується списком бінарних стовпців, і обчисліть sum значень у стовпці за допомогою функції agg. Застосуйте collect(), щоб виконати обчислення негайно, і збережіть результат у obs_count.
  • Порівняйте obs_count з obs_threshold. Оператор if має повертати істину, якщо obs_count менше або дорівнює obs_threshold.
  • Видаліть стовпці, додані до списку cols_to_remove, за допомогою drop(). Пам'ятайте, що символ * дає змогу розпакувати список.
  • Виведіть початкові та підсумкові розміри датафреймів PySpark, використовуючи count() для кількості рядків і len() на df.columns або new_df.columns для визначення кількості стовпців.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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.____)))
Редагувати та запускати код