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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert