Como calcular auc (área sob a curva) em python


A regressão logística é um método estatístico que usamos para ajustar um modelo de regressão quando a variável de resposta é binária.

Para avaliar quão bem um modelo de regressão logística se ajusta a um conjunto de dados, podemos observar as duas métricas a seguir:

  • Sensibilidade: probabilidade de o modelo prever um resultado positivo para uma observação quando o resultado é realmente positivo. Isso também é chamado de “taxa positiva verdadeira”.
  • Especificidade: a probabilidade de o modelo prever um resultado negativo para uma observação quando o resultado é realmente negativo. Isso também é chamado de “taxa verdadeiramente negativa”.

Uma maneira de visualizar essas duas medições é criar uma curva ROC , que significa curva “característica operacional do receptor”.

Este é um gráfico que exibe a sensibilidade ao longo do eixo y e (1 – especificidade) ao longo do eixo x.

Uma forma de quantificar a eficácia do modelo de regressão logística na classificação dos dados é calcular a AUC , que significa “área sob a curva”.

Quanto mais próximo o AUC estiver de 1, melhor será o modelo.

O exemplo passo a passo a seguir mostra como calcular a AUC para um modelo de regressão logística em Python.

Etapa 1: importar pacotes

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 import metrics

Passo 2: Ajustar o modelo de regressão logística

A seguir, importaremos um conjunto de dados e ajustaremos um modelo de regressão logística a ele:

 #import dataset from CSV file on Github
url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/default.csv"
data = pd. read_csv (url)

#define the predictor variables and the response variable
X = data[[' student ',' balance ',' income ']]
y = data[' default ']

#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
log_regression = LogisticRegression()

#fit the model using the training data
log_regression. fit (X_train,y_train)

Etapa 3: Calcule a AUC

Podemos usar a função métricas.roc_auc_score() para calcular a AUC do modelo:

 #use model to predict probability that given y value is 1
y_pred_proba = log_regression. predict_proba (X_test)[::, 1 ]

#calculate AUC of model
auc = metrics. roc_auc_score (y_test, y_pred_proba)

#print AUC score
print (auc)

0.5602104030579559

A AUC (área sob a curva) para este modelo específico é 0,5602 .

Lembre-se de que um modelo com pontuação AUC de 0,5 não é melhor do que um modelo que faz suposições aleatórias.

Assim, na maioria dos casos, um modelo com uma pontuação AUC de 0,5602 seria considerado fraco na classificação das observações nas classes corretas.

Recursos adicionais

Os tutoriais a seguir fornecem informações adicionais sobre curvas ROC e pontuações AUC:

Como interpretar uma curva ROC (com exemplos)
O que é considerado uma boa pontuação AUC?

Add a Comment

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