LoslegenKostenlos starten

One-Hot-Encoding

In den USA bestimmt dein Wohnort, welche Schulen deine Kinder besuchen können. Daher ist es verständlich, dass vielen Menschen wichtig ist, in welchen Schulbezirken ihr zukünftiges Zuhause liegt. Die Schulbezirke sind zwar in SCHOOLDISTRICTNUMBER nummeriert, inhaltlich handelt es sich aber um kategoriale Werte. Das heißt: Summen oder Mittelwerte dieser Werte haben keine sinnvolle Bedeutung. In diesem Beispiel wandeln wir SCHOOLDISTRICTNUMBER deshalb von einer kategorialen Variable in einen numerischen Vektor um, den wir später in unserem Machine-Learning-Modell nutzen können.

Diese Übung ist Teil des Kurses

<Kurs>Feature Engineering mit PySpark</Kurs>
Kurs ansehen

Übungsanweisungen

  • Erzeuge einen StringIndexer-Transformer mit dem Namen string_indexer mit SCHOOLDISTRICTNUMBER als Eingabe und School_Index als Ausgabe.
  • Wende den Transformer string_indexer auf df mit fit() und transform() an. Speichere das transformierte DataFrame in indexed_df.
  • Erstelle einen OneHotEncoder-Transformer mit dem Namen encoder und verwende School_Index als Eingabe und School_Vec als Ausgabe.
  • Wende die Transformation auf indexed_df mit transform() an. Untersuche die einzelnen Schritte der Transformation mit dem bereitgestellten Code.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

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 bearbeiten und ausführen