Un encodage à chaud est l'approche la plus répandue, et elle fonctionne très bien à moins que votre variable catégorielle ne prenne trop un grand nombre de valeurs (c'est-à-dire que vous ne le ferez généralement pas pour des variables prenant plus de 15 valeurs différentes. Ce serait un mauvais choix dans certains cas avec moins de valeurs, bien que cela varie.)

Un encodage à chaud crée de nouvelles colonnes (binaires), indiquant la présence de chaque valeur possible à partir des données d'origine. Prenons un exemple.

 

Les valeurs des données d'origine sont Rouge, Jaune et Vert. Nous créons une colonne séparée pour chaque valeur possible. Partout où la valeur originale était Rouge, nous avons mis un 1 dans la colonne Rouge.

 

one_hot_encoded_training_predictors = pd.get_dummies(train_predictors)
one_hot_encoded_test_predictors = pd.get_dummies(test_predictors)
final_train, final_test = one_hot_encoded_training_predictors.align(one_hot_encoded_test_predictors,join='left', axis=1)
 

La commande align permet de s'assurer que les colonnes apparaissent dans le même ordre dans les deux ensembles de données (elle utilise les noms de colonnes pour identifier les colonnes qui s'alignent dans chaque ensemble de données.) L'argument join='left' spécifie que nous allons faire l'équivalent du join gauche de SQL. Cela signifie que s'il y a des colonnes qui apparaissent dans un ensemble de données et non dans l'autre, nous conserverons exactement les colonnes de nos données de formation. L'argument join='inner' ferait ce que les bases de données SQL appellent une jointure interne, ne gardant que les colonnes qui apparaissent dans les deux ensembles de données. C'est aussi un choix judicieux

 

 

Voici des ressources qui vous seront utiles lorsque vous commencerez à faire un travail plus sophistiqué avec des données categoriells.
Pipelines : Le déploiement de modèles dans des systèmes prêts pour la production est un sujet en soi. Bien que l'encodage à chaud reste une excellente approche, votre code devra être construit d'une manière particulièrement robuste. Les pipelines Scikit-learn sont un excellent outil pour cela. Scikit-learn offre une classe pour l'encodage à chaud et ceci peut être ajouté à un Pipeline. Malheureusement, il ne gère pas les valeurs de texte ou d'objet, ce qui est un cas d'utilisation courant.


Applications To Text for Deep Learning : Keras et TensorFlow ont une fonctionnalité d'encodage à chaud, ce qui est utile pour travailler avec du texte.
Catégoriques avec de nombreuses valeurs : FeatureHasher de Scikit-learn utilise le tour de hachage pour stocker des données de haute dimension. Cela ajoutera une certaine complexité à votre code de modélisation..

Retour à l'accueil