Introduction
Dans ce projet, vous allez apprendre à effectuer un codage one-hot sur les données d'étiquette pour une tâche de classification à une seule étiquette. Le codage one-hot est une technique courante utilisée pour transformer les variables catégorielles en un format utilisable par les algorithmes d'apprentissage automatique.
🎯 Tâches
Dans ce projet, vous allez apprendre :
- à comprendre le concept de codage one-hot et son importance dans l'apprentissage automatique.
- à implémenter une fonction pour effectuer un codage one-hot sur une liste d'étiquettes d'échantillons.
- à tester la fonction de codage d'étiquette avec des données d'échantillonnage.
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- transformer les étiquettes catégorielles en un format numérique approprié pour les modèles d'apprentissage automatique.
- comprendre l'importance du prétraitement des données et de la génération de fonctionnalités dans le pipeline d'apprentissage automatique.
- démontrer des compétences de codage pratique en Python pour manipuler et transformer des données pour les tâches d'apprentissage automatique.
Encodage d'étiquette en one-hot
Dans cette étape, vous allez apprendre à effectuer un codage one-hot sur les données d'étiquette pour une tâche de classification à une seule étiquette.
Le codage one-hot est une technique courante utilisée pour transformer les variables catégorielles en un format utilisable par les algorithmes d'apprentissage automatique. Dans le cas de la classification à une seule étiquette, chaque étiquette unique dans le jeu de données est représentée comme un vecteur binaire, où la position de l'étiquette dans la liste est marquée comme 1 et toutes les autres positions sont 0.
Ouvrez le fichier label_process.py situé dans le répertoire /home/labex/project et ajoutez le code suivant :
def label_process(labels: List[str], sample_y: List[str]) -> List[List[int]]:
"""
Transforms a list of sample labels into a format suitable for classification tasks.
The function creates a binary list for each sample label, where the position
of the label in the 'labels' list is marked as 1 and all other positions are 0.
This is known as one-hot encoding.
Args:
labels (List[str]): List of unique labels/classes in the dataset.
sample_y (List[str]): List of sample labels to be transformed.
Returns:
List[List[int]]: Transformed labels, each represented as a binary list corresponding
to the positions in the 'labels' list.
"""
train_y = []
for y in sample_y:
train = [0] * len(labels)
train[labels.index(y)] = 1
train_y.append(train)
return train_y
- Dans la fonction
label_process, nous implémentons la logique de codage one-hot. La fonction prend deux arguments :labels: une liste des étiquettes/classes uniques dans le jeu de donnéessample_y: une liste des étiquettes d'échantillons à transformer
- Initialisez une liste vide appelée
train_ypour stocker les étiquettes transformées. - Itérez à travers la liste
sample_y:- Pour chaque étiquette
y, créez une nouvelle listetrainde longueur égale au nombre d'étiquettes uniques (len(labels)), et initialisez tous les éléments à 0. - Trouvez l'index de l'étiquette actuelle
ydans la listelabelsen utilisant la méthodeindex(), et définissez l'élément correspondant danstrainsur 1. - Ajoutez la liste
trainà la listetrain_y.
- Pour chaque étiquette
- Après la boucle, la liste
train_ycontiendra les étiquettes codées one-hot pour tous les échantillons. Retournez cette liste à partir de la fonctionlabel_process.
Test du codage d'étiquette
Dans cette étape, vous allez tester la fonction label_process en fournissant des données d'échantillonnage et en vérifiant la sortie.
Ajoutez le code suivant dans le fichier label_process.py :
## Continue in the same file
if __name__ == "__main__":
labels = ["Python", "Java", "Tensorflow", "Springboot", "Keras"]
sample_y = ["Python", "Python", "Python", "Java", "Java", "Keras"]
train_y = label_process(labels, sample_y)
print(train_y)
Ce code définit une liste d'étiquettes uniques (labels) et une liste d'étiquettes d'échantillonnage (sample_y), puis appelle la fonction label_process et imprime les étiquettes codées one-hot résultantes.
- Enregistrez le fichier
label_process.pyet exécutez le script à partir du terminal :
python label_process.py
La sortie devrait être :
[[1, 0, 0, 0, 0],
[1, 0, 0, 0, 0],
[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 0, 0, 1]]
Cette sortie montre les étiquettes codées one-hot pour les données d'échantillonnage. Chaque ligne représente un échantillon, et les colonnes correspondent aux positions des étiquettes dans la liste labels.
Félicitations! Vous avez réussi à implémenter le codage one-hot des étiquettes pour une tâche de classification à une seule étiquette.
Résumé
Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires dans LabEx pour améliorer vos compétences.



