Začněte nyníZačněte zdarma

Jednoduché zpracování chybějících a kategorických hodnot

Random Forest Regression je dostatečně robustní na to, abychom mohli přeskočit mnohé časově náročné kroky přípravy dat. Některé implementace Random Forestu si s chybějícími a kategorickými hodnotami poradí automaticky, PySpark to za nás ale neudělá. Matematika zůstává stejná, takže si vystačíme s jednoduchými náhradami hodnot.

Pro chybějící hodnoty použijeme -1, protože naše data jsou striktně kladná. Random forest se na tuto hodnotu rozdělí a bude s ní pracovat odlišně než s ostatními hodnotami ve stejném příznaku.

Kategorické hodnoty jednoduše namapujeme na čísla – random forest se s nimi opět vhodně vypořádá pomocí větvení. V tomto příkladu si oprášíme pipelines z kurzu Introduction to PySpark, abychom kód napsali stručněji. Cvičení začíná zobrazením dtypes sloupců v dataframu – porovnej je s výsledky na konci tohoto cvičení.

POZNÁMKA: Pipeline a StringIndexer jsou již naimportovány. K dispozici je také seznam categorical_cols.

Toto cvičení je součástí kurzu

Feature Engineering with PySpark

Zobrazit kurz

Pokyny k cvičení

  • Nahraď hodnoty ve sloupcích WALKSCORE a BIKESCORE hodnotou -1 pomocí fillna() a parametru subset.
  • Vytvoř seznam StringIndexerů pomocí list comprehension – iteruj přes každý sloupec v categorical_cols.
  • Aplikuj fit() a transform() na pipeline indexer_pipeline.
  • Odstraň categorical_cols pomocí drop(), protože je už nepotřebujeme. Zkontroluj výsledné datové typy pomocí dtypes.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# Replace missing values
df = df.____(____, ____=[____, ____])

# Create list of StringIndexers using list comprehension
indexers = [____(inputCol=____, outputCol=____+"_IDX")\
            .setHandleInvalid("keep") for ____ in ____]
# Create pipeline of indexers
indexer_pipeline = Pipeline(stages=indexers)
# Fit and Transform the pipeline to the original data
df_indexed = ____.____(df).____(df)

# Clean up redundant columns
df_indexed = df_indexed.____(*____)
# Inspect data transformations
print(df_indexed.dtypes)
Upravit a spustit kód