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
Instructions de l’exercice
- Instanciez un transformateur
StringIndexernomméstring_indexeravecSCHOOLDISTRICTNUMBERcomme entrée etSchool_Indexcomme sortie. - Appliquez le transformateur
string_indexeràdfavecfit()puistransform(). Enregistrez le DataFrame transformé dansindexed_df. - Créez un transformateur
OneHotEncodernomméencoderen utilisantSchool_Indexcomme entrée etSchool_Veccomme sortie. - Appliquez la transformation à
indexed_dfavectransform(). 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)