Aan de slagBegin gratis

One-hot encoderen

In de Verenigde Staten bepaalt waar je woont naar welke scholen je kinderen kunnen gaan. Het is dus logisch dat veel mensen veel waarde hechten aan in welk schooldistrict hun toekomstige huis valt. Hoewel de schooldistricten genummerd zijn in SCHOOLDISTRICTNUMBER, zijn het in feite categorische waarden. Optellen of middelen van deze waarden heeft daarom geen betekenis. In dit voorbeeld zetten we SCHOOLDISTRICTNUMBER om van een categorische variabele naar een numerieke vector, zodat we die later in ons Machine Learning-model kunnen gebruiken.

Deze oefening maakt deel uit van de cursus

Feature Engineering met PySpark

Bekijk cursus

Oefeninstructies

  • Maak een StringIndexer-transformer met de naam string_indexer met SCHOOLDISTRICTNUMBER als input en School_Index als output.
  • Pas de transformer string_indexer toe op df met fit() en transform(). Sla de getransformeerde dataframe op in indexed_df.
  • Maak een OneHotEncoder-transformer met de naam encoder met School_Index als input en School_Vec als output.
  • Pas de transformatie toe op indexed_df met transform(). Bekijk de tussenstappen van de transformatie met de meegeleverde code.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

from pyspark.ml.feature import OneHotEncoder, StringIndexer

# Map strings to numbers with string indexer
string_indexer = ____(inputCol=____, outputCol=____)
indexed_df = ____.____(df).____(df)

# Onehot encode indexed values
encoder = ____(inputCol=____, outputCol=____)
encoded_df = ____.____(indexed_df)

# Inspect the transformation steps
encoded_df[['SCHOOLDISTRICTNUMBER', 'School_Index', 'School_Vec']].show(truncate=100)
Code bewerken en uitvoeren