Come interpretare il rapporto di classificazione in sklearn (con esempio)


Quando utilizziamoi modelli di classificazione nell’apprendimento automatico, utilizziamo tre metriche comuni per valutare la qualità del modello:

1. Accuratezza : percentuale di previsioni positive corrette rispetto al totale delle previsioni positive.

2. Richiamo : percentuale di previsioni positive corrette rispetto al totale dei positivi effettivi.

3. Punteggio F1 : una media armonica ponderata di precisione e richiamo. Più il modello è vicino a 1, migliore è il modello.

  • Punteggio F1: 2* (Precisione * Richiamo) / (Precisione + Richiamo)

Utilizzando questi tre parametri, possiamo capire quanto bene un determinato modello di classificazione sia in grado di prevedere i risultati per determinate variabili di risposta .

Fortunatamente, quando adattiamo un modello di classificazione in Python, possiamo utilizzare la funzione classification_report() della libreria sklearn per generare queste tre metriche.

L’esempio seguente mostra come utilizzare questa funzione nella pratica.

Esempio: come utilizzare il rapporto di classificazione in sklearn

Per questo esempio, adatteremo un modello di regressione logistica che utilizza punti e assist per prevedere se 1.000 diversi giocatori di basket universitari verranno arruolati o meno nella NBA.

Per prima cosa importeremo i pacchetti necessari per eseguire la regressione logistica in Python:

 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

Successivamente, creeremo il data frame contenente le informazioni di 1000 giocatori di basket:

 #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

Nota : un valore pari a 0 indica che un giocatore non è stato scelto mentre un valore pari a 1 indica che un giocatore è stato scelto.

Successivamente, divideremo i nostri dati in un set di training e in un set di test e adatteremo il modello di regressione logistica:

 #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)

Infine, utilizzeremo la funzione classification_report() per stampare le metriche di classificazione del nostro modello:

 #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

Ecco come interpretare il risultato:

Precisazione : tra tutti i giocatori il cui modello prevedeva che sarebbero stati draftati, solo il 43% lo è stato effettivamente.

Promemoria : tra tutti i giocatori effettivamente scelti, il modello ha previsto correttamente questo risultato solo per il 36% di essi.

Punteggio F1 : questo valore viene calcolato come segue:

  • Punteggio F1: 2* (Precisione * Richiamo) / (Precisione + Richiamo)
  • Punteggio F1: 2*(.43*.36)/(.43+.36)
  • Voto F1: 0,40 .

Dato che questo valore non è molto vicino a 1, questo ci dice che il modello non prevede bene se i giocatori verranno scelti o meno.

Supporto : questi valori ci dicono semplicemente quanti giocatori appartenevano a ciascuna classe nel set di dati di test. Possiamo vedere che dei giocatori nel set di dati del test, 160 non erano stati scelti e 140 lo erano.

Nota : puoi trovare la documentazione completa per la funzione classification_report() qui .

Risorse addizionali

I seguenti tutorial forniscono informazioni aggiuntive sull’utilizzo dei modelli di classificazione in Python:

Come eseguire la regressione logistica in Python
Come creare una matrice di confusione in Python
Come calcolare la precisione bilanciata in Python

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *