Kom igångKom igång gratis

Ta bort kolumner med få observationer

Efter att ha gjort mycket särdragsframtagning är det en bra idé att ta ett steg tillbaka och granska vad du har skapat. Om du har använt automatiseringstekniker på dina kategoriska särdrag, som att expandera eller OneHot-koda dem, kan du ha fått hundratals nya binära särdrag. Även om särdragsurval är ett ämne för en hel annan kurs, finns det några snabba åtgärder du kan vidta för att minska dimensionaliteten i din datamängd.

I den här övningen ska vi ta bort kolumner som har färre än 30 observationer. 30 är ett vanligt minsta antal observationer för statistisk signifikans. Har du färre än så riskerar sambanden att leda till överanpassning – ofta på grund av ren slump!

OBS: Data finns tillgänglig i dataframen df.

Den här övningen är en del av kursen

Feature Engineering med PySpark

Visa kurs

Övningsinstruktioner

  • Använd den befintliga for-loopen som itererar genom listan med binära kolumner och beräkna sum av värdena i kolumnen med funktionen agg. Använd collect() för att köra beräkningen direkt och spara resultatet i obs_count.
  • Jämför obs_count med obs_thresholdif-satsen ska vara sann om obs_count är mindre än eller lika med obs_threshold.
  • Ta bort kolumner som lagts till i listan cols_to_remove med hjälp av drop(). Kom ihåg att * gör att listan packas upp.
  • Skriv ut PySpark-dataframens form i början och slutet genom att använda count() för antalet poster och len()df.columns respektive new_df.columns för att få antalet kolumner.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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.____)))
Redigera och kör kod