Confusion Matrix erstellen

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 man eine Confusion Matrix implementiert, die ein grundlegendes Werkzeug zur Bewertung der Leistung eines Klassifizierungsmodells ist. Die Confusion Matrix liefert eine detaillierte Aufschlüsselung der Vorhersagen des Modells, sodass du Bereiche zur Verbesserung identifizieren und wertvolle Einblicke in die Stärken und Schwächen des Modells gewinnen kannst.

🎯 Aufgaben

In diesem Projekt wirst du lernen:

  • Wie man die confusion_matrix-Funktion implementiert, um die Confusion Matrix für ein Klassifizierungsproblem zu berechnen
  • Wie man die confusion_matrix-Funktion testet und optimiert, um Randfälle zu behandeln und ihre Robustheit zu verbessern
  • Wie man die confusion_matrix-Funktion dokumentiert, um sie nutzerfreundlicher und leichter zu verstehen zu machen
  • Wie man die confusion_matrix-Funktion in ein größeres Machine-Learning-Projekt integriert und verwendet, um die Leistung eines Klassifizierungsmodells zu bewerten

🏆 Errungenschaften

Nach Abschluss dieses Projekts wirst du in der Lage sein:

  • Die Confusion Matrix für ein Klassifizierungsproblem zu berechnen und zu interpretieren
  • Techniken anzuwenden, um Randfälle zu behandeln und die Robustheit einer Funktion zu verbessern
  • Beste Praktiken für die Dokumentation und die Verbesserung der Benutzerfreundlichkeit des Codes umzusetzen
  • Die Confusion Matrix im Rahmen eines größeren Machine-Learning-Projekts anzuwenden

Implementiere die Confusion Matrix-Funktion

In diesem Schritt implementierst du die confusion_matrix-Funktion in der Datei confusion_matrix.py. Diese Funktion berechnet die Confusion Matrix für ein Klassifizierungsproblem.

Die confusion_matrix-Funktion nimmt drei Eingaben entgegen:

  1. labels: Eine Liste von Labels, die die verschiedenen Klassen repräsentieren.
  2. preds: Eine Liste von Vorhersagen, wobei jede Vorhersage eine Liste von Wahrscheinlichkeiten ist, die den Klassen in der labels-Liste entsprechen.
  3. ground_truth: Eine Liste von tatsächlichen Labels.

Die Funktion sollte die Confusion Matrix als Liste von Listen zurückgeben, wobei jede innere Liste eine Zeile in der Matrix repräsentiert.

Hier ist der Ausgangscode für die confusion_matrix-Funktion:

def confusion_matrix(
    labels: List, preds: List[List[float]], ground_truth: List
) -> List[List[int]]:
    """
    Berechnet die Confusion Matrix für ein Klassifizierungsproblem.

    Die Funktion nimmt eine Liste von Labels, eine Liste von Vorhersagen (jede als Liste von Wahrscheinlichkeiten
    für jede Klasse) und eine Liste von tatsächlichen Labels entgegen und gibt eine Confusion Matrix zurück.
    Die Confusion Matrix ist eine quadratische Matrix, wobei der Eintrag (i, j) die Anzahl der Male ist, dass Klasse i
    vorhergesagt wurde, wenn die wahre Klasse j war.

    Parameter:
    labels (List): Eine Liste von Labels, die die verschiedenen Klassen repräsentieren.
    preds (List[List[float]]): Eine Liste von Vorhersagen, wobei jede Vorhersage eine Liste von
                               Wahrscheinlichkeiten ist, die den Klassen in der labels-Liste entsprechen.
    ground_truth (List): Eine Liste von tatsächlichen Labels.

    Rückgabe:
    List[List[int]]: Die Confusion Matrix, dargestellt als Liste von Listen, wobei jede Liste
                     eine Zeile in der Matrix repräsentiert.
    """
    ## Dies erstellt eine quadratische Matrix mit Dimensionen, die der Anzahl der Klassen entsprechen, und initialisiert alle Elemente mit Null. Jede Zeile und Spalte entspricht einem Klassenlabel.
    matrix = [[0 for _ in range(len(labels))] for _ in range(len(labels))]

    ## Dieser Loop paart jede Vorhersage mit ihrem entsprechenden tatsächlichen Label und verarbeitet sie nacheinander.
    for pred, truth in zip(preds, ground_truth):
        ## Verwenden Sie NumPy, um den Index der höchsten Wahrscheinlichkeit in der Vorhersagelist zu finden, der der vorhergesagten Klasse entspricht.
        pred_index = np.argmax(pred)
        ## Findet den Index des wahren Klassenlabels in der `labels`-Liste.
        truth_index = labels.index(truth)
        ## Diese Zeile erhöht die Zelle an der Schnittstelle der vorhergesagten Klasse Zeile und der wahren Klasse Spalte in der Confusion Matrix, was effektiv die Anzahl dieser spezifischen Vorhersage-Wahrheit-Paare zählt.
        matrix[pred_index][truth_index] += 1

    ## Nachdem alle Vorhersagen verarbeitet wurden, gibt die Funktion die berechnete Confusion Matrix zurück.
    return matrix

In der confusion_matrix-Funktion implementierst du die Logik, um die Confusion Matrix für ein Klassifizierungsproblem zu berechnen.

✨ Lösung prüfen und üben

Teste die Confusion Matrix-Funktion

In diesem Schritt wirst du die confusion_matrix-Funktion mit dem bereitgestellten Beispiel testen.

Füge folgenden Code in die Datei confusion_matrix.py hinzu:

if __name__ == "__main__":
    labels = ["Python", "Java", "C++"]
    preds = [
        [0.66528198, 0.21971853, 0.11499949],
        [0.34275858, 0.05847305, 0.59876836],
        [0.47650585, 0.26353373, 0.25996042],
        [0.76153846, 0.15384615, 0.08461538],
        [0.04691943, 0.9478673, 0.00521327],
    ]
    ground_truth = ["Python", "C++", "Java", "C++", "Java"]
    matrix = confusion_matrix(labels, preds, ground_truth)
    print(matrix)

Führe die Datei confusion_matrix.py aus, um das Beispiel auszuführen:

python confusion_matrix.py

Die Ausgabe sollte wie folgt sein:

[[1, 1, 1],
 [0, 1, 0],
 [0, 0, 1]]

Verifiziere, dass die Ausgabe mit der erwarteten Confusion Matrix übereinstimmt.

Wenn die Ausgabe nicht wie erwartet ist, überprüfe die Implementierung der confusion_matrix-Funktion und mache die erforderlichen Korrekturen.

✨ Lösung prüfen und üben

Zusammenfassung

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