CommencerCommencez gratuitement

One Hot Encoding

Aux États-Unis, l’endroit où vous vivez détermine à quelles écoles vos enfants peuvent aller. Il est donc compréhensible que beaucoup de personnes accordent une grande importance au district scolaire de leur futur logement. Bien que les districts scolaires soient numérotés dans SCHOOLDISTRICTNUMBER, il s’agit en réalité d’une variable catégorielle. En d’autres termes, additionner ou moyenner ces valeurs n’a aucun sens. Dans cet exemple, nous allons donc convertir SCHOOLDISTRICTNUMBER d’une variable catégorielle en un vecteur numérique pour l’utiliser plus tard dans notre modèle de Machine Learning.

Cet exercice fait partie du cours

<cours>Feature Engineering avec PySpark</cours>
Voir le cours

Instructions de l’exercice

  • Instanciez un transformeur StringIndexer appelé string_indexer avec SCHOOLDISTRICTNUMBER en entrée et School_Index en sortie.
  • Appliquez le transformeur string_indexer à df avec fit() puis transform(). Stockez le DataFrame transformé dans indexed_df.
  • Créez un transformeur OneHotEncoder appelé encoder en utilisant School_Index en entrée et School_Vec en sortie.
  • Appliquez la transformation à indexed_df avec transform(). Examinez les étapes successives de la transformation avec le code fourni.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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)
Modifier et exécuter le code