CommencezCommencez gratuitement

Encodage one-hot

Aux États-Unis, l'endroit où vous habitez détermine à quelles écoles vos enfants peuvent aller. Il est donc compréhensible que plusieurs personnes accordent beaucoup d'importance au district scolaire associé à leur future maison. Même si les districts scolaires sont numérotés dans SCHOOLDISTRICTNUMBER, il s'agit en réalité d'une variable catégorielle. Additionner ou calculer la moyenne de ces valeurs n'a donc pas de sens. Dans cet exemple, nous allons convertir SCHOOLDISTRICTNUMBER d'une variable catégorielle en un vecteur numérique afin de l'utiliser plus tard dans notre modèle de Machine Learning.

Cette activité fait partie du cours

Ingénierie des caractéristiques avec PySpark

Voir le cours

Instructions de l’exercice

  • Instanciez un transformateur StringIndexer nommé string_indexer avec SCHOOLDISTRICTNUMBER comme entrée et School_Index comme sortie.
  • Appliquez le transformateur string_indexer à df avec fit() puis transform(). Enregistrez le DataFrame transformé dans indexed_df.
  • Créez un transformateur OneHotEncoder nommé encoder en utilisant School_Index comme entrée et School_Vec comme sortie.
  • Appliquez la transformation à indexed_df avec transform(). Examinez les étapes successives de la transformation à l'aide du 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