Como interpretar o relatório de classificação no sklearn (com exemplo)


Quando usamos modelos de classificação em aprendizado de máquina, usamos três métricas comuns para avaliar a qualidade do modelo:

1. Precisão : Porcentagem de previsões positivas corretas em comparação com o total de previsões positivas.

2. Recall : Porcentagem de previsões positivas corretas em comparação com o total de positivos reais.

3. Pontuação F1 : Uma média harmônica ponderada de precisão e recuperação. Quanto mais próximo o modelo estiver de 1, melhor será o modelo.

  • Pontuação F1: 2* (Precisão * Rechamada) / (Precisão + Rechamada)

Usando essas três métricas, podemos entender até que ponto um determinado modelo de classificação é capaz de prever resultados para determinadas variáveis de resposta .

Felizmente, ao ajustar um modelo de classificação em Python, podemos usar a função rating_report() da biblioteca sklearn para gerar essas três métricas.

O exemplo a seguir mostra como usar esta função na prática.

Exemplo: Como usar o relatório de classificação no sklearn

Para este exemplo, ajustaremos um modelo de regressão logística que usa pontos e assistências para prever se 1.000 jogadores diferentes de basquete universitário serão ou não convocados para a NBA.

Primeiramente, importaremos os pacotes necessários para realizar a regressão logística em 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

A seguir, criaremos o data frame contendo as informações de 1000 jogadores de basquete:

 #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 : Um valor 0 indica que um jogador não foi draftado, enquanto um valor 1 indica que um jogador foi draftado.

A seguir, dividiremos nossos dados em um conjunto de treinamento e um conjunto de teste e ajustaremos o modelo de regressão logística:

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

Por fim, usaremos a função rating_report() para imprimir as métricas de classificação do nosso modelo:

 #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

Veja como interpretar o resultado:

Esclarecimento : de todos os jogadores cujo modelo previa que seriam convocados, apenas 43% o foram.

Lembrete : entre todos os jogadores efetivamente convocados, o modelo previu corretamente esse resultado apenas para 36% deles.

Pontuação F1 : Este valor é calculado da seguinte forma:

  • Pontuação F1: 2* (Precisão * Rechamada) / (Precisão + Rechamada)
  • Pontuação F1: 2*(0,43*0,36)/(0,43+0,36)
  • Classificação F1: 0,40 .

Como este valor não está muito próximo de 1, isso nos diz que o modelo está prevendo mal se os jogadores serão convocados ou não.

Suporte : Esses valores simplesmente nos dizem quantos jogadores pertenciam a cada classe no conjunto de dados de teste. Podemos ver que dos jogadores no conjunto de dados de teste, 160 não foram draftados e 140 foram.

Nota : Você pode encontrar a documentação completa para a função rating_report() aqui .

Recursos adicionais

Os tutoriais a seguir fornecem informações adicionais sobre o uso de modelos de classificação em Python:

Como realizar regressão logística em Python
Como criar uma matriz de confusão em Python
Como calcular a precisão balanceada em Python

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *