Einführung
In diesem Projekt lernst du, wie du eine One-Hot-Codierung für die Label-Daten einer Single-Label-Klassifizierung durchführst. Die One-Hot-Codierung ist eine übliche Technik, die verwendet wird, um kategorische Variablen in ein Format zu transformieren, das von Machine-Learning-Algorithmen verwendet werden kann.
🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Wie du das Konzept der One-Hot-Codierung verstehst und ihre Wichtigkeit im Machine Learning.
- Wie du eine Funktion implementierst, um eine One-Hot-Codierung auf einer Liste von Beispiel-Labels durchzuführen.
- Wie du die Label-Codierungsfunktion mit Beispiel-Daten testest.
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- Kategorische Labels in ein numerisches Format zu transformieren, das für Machine-Learning-Modelle geeignet ist.
- Die Wichtigkeit der Datenaufbereitung und der Feature-Engineering im Machine-Learning-Pipeline zu verstehen.
- Praktische Codierungskompetenzen in Python zu demonstrieren, um Daten für Machine-Learning-Tasks zu manipulieren und zu transformieren.
Label in One-Hot codieren
In diesem Schritt lernst du, wie du eine One-Hot-Codierung für die Label-Daten einer Single-Label-Klassifizierung durchführst.
Die One-Hot-Codierung ist eine übliche Technik, die verwendet wird, um kategorische Variablen in ein Format zu transformieren, das von Machine-Learning-Algorithmen verwendet werden kann. Im Falle der Single-Label-Klassifizierung wird jedes eindeutige Label in der Datenmenge als binärer Vektor dargestellt, wobei die Position des Labels in der Liste als 1 markiert und alle anderen Positionen als 0.
Öffne die Datei label_process.py, die sich im Verzeichnis /home/labex/project befindet, und füge den folgenden Code hinzu:
def label_process(labels: List[str], sample_y: List[str]) -> List[List[int]]:
"""
Wandelt eine Liste von Beispiel-Labels in ein für Klassifizierungstasks geeignetes Format um.
Die Funktion erstellt eine binäre Liste für jedes Beispiel-Label, wobei die Position
des Labels in der Liste 'labels' als 1 markiert und alle anderen Positionen als 0 sind.
Dies wird als One-Hot-Codierung bezeichnet.
Args:
labels (List[str]): Liste der eindeutigen Labels/Klassen in der Datenmenge.
sample_y (List[str]): Liste der zu transformierenden Beispiel-Labels.
Returns:
List[List[int]]: Transformierte Labels, wobei jedes als binäre Liste dargestellt wird,
die den Positionen in der Liste 'labels' entspricht.
"""
train_y = []
for y in sample_y:
train = [0] * len(labels)
train[labels.index(y)] = 1
train_y.append(train)
return train_y
- In der Funktion
label_processimplementieren wir die One-Hot-Codierungslogik. Die Funktion nimmt zwei Argumente entgegen:labels: Eine Liste der eindeutigen Labels/Klassen in der Datenmengesample_y: Eine Liste der zu transformierenden Beispiel-Labels
- Initialisiere eine leere Liste namens
train_y, um die transformierten Labels zu speichern. - Iteriere durch die Liste
sample_y:- Für jedes Label
yerstelle eine neue Listetrainder Länge, die der Anzahl der eindeutigen Labels (len(labels)) entspricht, und initialisiere alle Elemente mit 0. - Finde den Index des aktuellen Labels
yin der Listelabelsmit derindex()-Methode und setze das entsprechende Element intrainauf 1. - Füge die Liste
trainzur Listetrain_yhinzu.
- Für jedes Label
- Nachdem die Schleife abgeschlossen ist, enthält die Liste
train_ydie One-Hot-codierten Labels für alle Samples. Gib diese Liste von der Funktionlabel_processzurück.
Das Testen der Label-Codierung
In diesem Schritt wirst du die Funktion label_process testen, indem du einige Beispiel-Daten bereit stellst und die Ausgabe überprüfst.
Füge den folgenden Code in die Datei label_process.py hinzu:
## Weiter in derselben Datei
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)
Dieser Code definiert eine Liste von eindeutigen Labels (labels) und eine Liste von Beispiel-Labels (sample_y), ruft dann die Funktion label_process auf und druckt die resultierenden One-Hot-codierten Labels aus.
- Speichere die Datei
label_process.pyund führe das Skript aus der Kommandozeile aus:
python label_process.py
Die Ausgabe sollte wie folgt sein:
[[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]]
Diese Ausgabe zeigt die One-Hot-codierten Labels für die Beispiel-Daten. Jede Zeile stellt ein Sample dar, und die Spalten entsprechen den Positionen der Labels in der Liste labels.
Herzlichen Glückwunsch! Du hast die One-Hot-Codierung von Labels für eine Single-Label-Klassifizierung erfolgreich implementiert.
Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Labs absolvieren, um deine Fähigkeiten zu verbessern.



