ÎncepețiÎncepe gratuit

Eliminarea coloanelor cu puține observații

După ce ai realizat multă inginerie a caracteristicilor, este o idee bună să faci un pas înapoi și să analizezi ce ai creat. Dacă ai aplicat tehnici de automatizare pe caracteristicile categorice – precum explodarea sau codificarea OneHot – s-ar putea să ai acum sute de noi caracteristici binare. Deși selecția caracteristicilor este subiectul unui alt curs, există câțiva pași rapizi pe care îi poți face pentru a reduce dimensionalitatea setului de date.

În acest exercițiu, vom elimina coloanele care au mai puțin de 30 de observații. 30 este numărul minim uzual de observații pentru semnificație statistică. Sub această valoare, relațiile duc la supraajustare din simplă coincidență!

NOTĂ: Datele sunt disponibile în dataframe-ul df.

Acest exercițiu face parte din cursul

Feature Engineering cu PySpark

Vezi cursul

Instrucțiuni pentru exercițiu

  • Folosind bucla for furnizată, care iterează prin lista coloanelor binare, calculează sum-ul valorilor din coloană cu ajutorul funcției agg. Folosește collect() pentru a rula calculul imediat și salvează rezultatele în obs_count.
  • Compară obs_count cu obs_threshold; instrucțiunea if trebuie să fie adevărată dacă obs_count este mai mică sau egală cu obs_threshold.
  • Elimină coloanele adăugate în lista cols_to_remove folosind drop(). Reține că * permite despachetarea listei.
  • Afișează forma inițială și finală a dataframe-urilor PySpark folosind count() pentru numărul de înregistrări și len() pe df.columns sau new_df.columns pentru numărul de coloane.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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.____)))
Editează și rulează codul