So interpretieren sie den klassifizierungsbericht in sklearn (mit beispiel)
Wenn wir Klassifizierungsmodelle beim maschinellen Lernen verwenden, verwenden wir drei gängige Metriken, um die Qualität des Modells zu bewerten:
1. Genauigkeit : Prozentsatz der korrekten positiven Vorhersagen im Vergleich zur Gesamtzahl der positiven Vorhersagen.
2. Rückruf : Prozentsatz der korrekten positiven Vorhersagen im Vergleich zur Gesamtzahl der tatsächlichen positiven Vorhersagen.
3. F1-Score : Ein gewichteter harmonischer Durchschnitt von Präzision und Erinnerung. Je näher das Modell an 1 liegt, desto besser ist das Modell.
- F1-Punktzahl: 2* (Präzision * Rückruf) / (Präzision + Rückruf)
Anhand dieser drei Metriken können wir verstehen, wie gut ein bestimmtes Klassifizierungsmodell Ergebnisse für bestimmte Antwortvariablen vorhersagen kann.
Glücklicherweise können wir beim Anpassen eines Klassifizierungsmodells in Python die Funktion „classification_report()“ aus der sklearn- Bibliothek verwenden, um diese drei Metriken zu generieren.
Das folgende Beispiel zeigt, wie Sie diese Funktion in der Praxis nutzen können.
Beispiel: Verwendung des Klassifizierungsberichts in sklearn
Für dieses Beispiel passen wir ein logistisches Regressionsmodell an, das Punkte verwendet und dabei hilft, vorherzusagen, ob 1.000 verschiedene College-Basketballspieler in die NBA eingezogen werden oder nicht.
Zuerst importieren wir die notwendigen Pakete, um eine logistische Regression in Python durchzuführen:
import pandas as pd import numpy as np from sklearn. model_selection import train_test_split from sklearn. linear_model import LogisticRegression from sklearn. metrics import classification_report
Als Nächstes erstellen wir den Datenrahmen mit den Informationen von 1000 Basketballspielern:
#make this example reproducible
n.p. random . seeds (1)
#createDataFrame
df = pd. DataFrame ({' points ': np. random . randint (30, size=1000),
' assists ': np. random . randint (12, size=1000),
' drafted ': np. random . randint (2, size=1000)})
#view DataFrame
df. head ()
points assists drafted
0 5 1 1
1 11 8 0
2 12 4 1
3 8 7 0
4 9 0 0
Hinweis : Ein Wert von 0 gibt an, dass ein Spieler nicht gedraftet wurde, während ein Wert von 1 angibt, dass ein Spieler gedraftet wurde.
Als nächstes werden wir unsere Daten in einen Trainingssatz und einen Testsatz aufteilen und das logistische Regressionsmodell anpassen:
#define the predictor variables and the response variable X = df[[' points ', ' assists ']] y = df[' drafted '] #split the dataset into training (70%) and testing (30%) sets X_train,X_test,y_train,y_test = train_test_split (X,y,test_size=0.3,random_state=0) #instantiate the model logistic_regression = LogisticRegression() #fit the model using the training data logistic_regression. fit (X_train,y_train) #use model to make predictions on test data y_pred = logistic_regression. predict (X_test)
Abschließend verwenden wir die Funktion „classification_report()“ , um die Klassifizierungsmetriken unseres Modells auszudrucken:
#print classification report for model
print (classification_report(y_test, y_pred))
precision recall f1-score support
0 0.51 0.58 0.54 160
1 0.43 0.36 0.40 140
accuracy 0.48 300
macro avg 0.47 0.47 0.47 300
weighted avg 0.47 0.48 0.47 300
So interpretieren Sie das Ergebnis:
Klarstellung : Von allen Spielern, deren Modell vorhersagte, dass sie gedraftet werden würden, waren es nur 43 % tatsächlich.
Zur Erinnerung : Von allen tatsächlich gedrafteten Spielern hat das Modell dieses Ergebnis nur für 36 % richtig vorhergesagt.
F1-Score : Dieser Wert wird wie folgt berechnet:
- F1-Punktzahl: 2* (Präzision * Rückruf) / (Präzision + Rückruf)
- F1-Wertung: 2*(.43*.36)/(.43+.36)
- F1-Wertung: 0,40 .
Da dieser Wert nicht sehr nahe bei 1 liegt, bedeutet dies, dass das Modell schlecht vorhersagt, ob Spieler gedraftet werden oder nicht.
Unterstützung : Diese Werte sagen uns einfach, wie viele Spieler zu jeder Klasse im Testdatensatz gehörten. Wir können sehen, dass von den Spielern im Testdatensatz 160 und 140 nicht gedraftet waren.
Hinweis : Die vollständige Dokumentation für die Funktion classification_report() finden Sie hier .
Zusätzliche Ressourcen
Die folgenden Tutorials bieten zusätzliche Informationen zur Verwendung von Klassifizierungsmodellen in Python:
So führen Sie eine logistische Regression in Python durch
So erstellen Sie eine Verwirrungsmatrix in Python
So berechnen Sie die ausgewogene Präzision in Python