Label in One-Hot codieren

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/DataScienceandMachineLearningGroup(["Data Science and Machine Learning"]) python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/DataScienceandMachineLearningGroup -.-> python/machine_learning("Machine Learning") subgraph Lab Skills python/conditional_statements -.-> lab-300216{{"Label in One-Hot codieren"}} python/lists -.-> lab-300216{{"Label in One-Hot codieren"}} python/function_definition -.-> lab-300216{{"Label in One-Hot codieren"}} python/machine_learning -.-> lab-300216{{"Label in One-Hot codieren"}} end

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
  1. In der Funktion label_process implementieren wir die One-Hot-Codierungslogik. Die Funktion nimmt zwei Argumente entgegen:
    • labels: Eine Liste der eindeutigen Labels/Klassen in der Datenmenge
    • sample_y: Eine Liste der zu transformierenden Beispiel-Labels
  2. Initialisiere eine leere Liste namens train_y, um die transformierten Labels zu speichern.
  3. Iteriere durch die Liste sample_y:
    • Für jedes Label y erstelle eine neue Liste train der Länge, die der Anzahl der eindeutigen Labels (len(labels)) entspricht, und initialisiere alle Elemente mit 0.
    • Finde den Index des aktuellen Labels y in der Liste labels mit der index()-Methode und setze das entsprechende Element in train auf 1.
    • Füge die Liste train zur Liste train_y hinzu.
  4. Nachdem die Schleife abgeschlossen ist, enthält die Liste train_y die One-Hot-codierten Labels für alle Samples. Gib diese Liste von der Funktion label_process zurück.
✨ Lösung prüfen und üben

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.

  1. Speichere die Datei label_process.py und 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.

✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Labs absolvieren, um deine Fähigkeiten zu verbessern.