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>Instructions de l’exercice
- Instanciez un transformeur
StringIndexerappeléstring_indexeravecSCHOOLDISTRICTNUMBERen entrée etSchool_Indexen sortie. - Appliquez le transformeur
string_indexeràdfavecfit()puistransform(). Stockez le DataFrame transformé dansindexed_df. - Créez un transformeur
OneHotEncoderappeléencoderen utilisantSchool_Indexen entrée etSchool_Vecen sortie. - Appliquez la transformation à
indexed_dfavectransform(). 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)