Odstranění sloupců s nízkým počtem pozorování
Po rozsáhlém feature engineeringu je dobré udělat krok zpět a podívat se, co všechno jsi vytvořil/a. Pokud jsi na kategorické příznaky aplikoval/a automatizované techniky, jako je explodování nebo OneHot Encoding, může se stát, že máš teď stovky nových binárních příznaků. Téma výběru příznaků by vydalo na celý samostatný kurz, ale existují rychlé kroky, jak zredukovat dimenzionalitu datové sady.
V tomto cvičení odstraníme sloupce, které mají méně než 30 pozorování. Třicet je běžně uznávaná minimální hodnota pro statistickou významnost. Pokud je pozorování méně, vztahy v datech vedou k přetrénování modelu, protože jde o pouhou náhodu!
POZNÁMKA: Data jsou dostupná v dataframu df.
Toto cvičení je součástí kurzu
Feature Engineering with PySpark
Pokyny k cvičení
- Pomocí připraveného cyklu
for, který prochází seznam binárních sloupců, vypočítejsumhodnot v daném sloupci pomocí funkceagg. Použijcollect(), aby se výpočet provedl okamžitě, a výsledek ulož doobs_count. - Porovnej
obs_countsobs_threshold— příkazifmá být pravdivý, pokud jeobs_countmenší nebo rovnoobs_threshold. - Odstraň sloupce přidané do seznamu
cols_to_removepomocídrop(). Vzpomeň si, že*umožňuje rozbalit seznam. - Vypiš počáteční a koncový tvar PySpark dataframů — pro počet záznamů použij
count()a pro počet sloupcůlen()nadf.columnsnebonew_df.columns.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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.____)))