Como desenhar uma curva roc em python (passo a passo)


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 mostra a sensibilidade e especificidade de um modelo de regressão logística.

O exemplo passo a passo a seguir mostra como criar e interpretar uma curva ROC em Python.

Passo 1: Importe os pacotes necessários

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
import matplotlib. pyplot as plt

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: desenhe a curva ROC

A seguir, calcularemos a taxa de verdadeiros positivos e de falsos positivos e criaremos uma curva ROC usando o pacote de visualização de dados Matplotlib:

 #define metrics
y_pred_proba = log_regression. predict_proba (X_test)[::,1]
fpr, tpr, _ = metrics. roc_curve (y_test, y_pred_proba)

#create ROC curve
plt. plot (fpr,tpr)
plt. ylabel (' True Positive Rate ')
plt. xlabel (' False Positive Rate ')
plt. show () 

Quanto mais próxima a curva estiver do canto superior esquerdo do gráfico, melhor o modelo será capaz de classificar os dados em categorias.

Como podemos ver no gráfico acima, esse modelo de regressão logística faz um péssimo trabalho ao classificar os dados em categorias.

Para quantificar isto, podemos calcular a AUC – área sob a curva – que nos diz quanto do gráfico está sob a curva.

Quanto mais próximo o AUC estiver de 1, melhor será o modelo. Um modelo com AUC igual a 0,5 não é melhor do que um modelo que faz classificações aleatórias.

Etapa 4: Calcule a AUC

Podemos usar o seguinte código para calcular a AUC do modelo e exibi-la no canto inferior direito do gráfico ROC:

 #define metrics
y_pred_proba = log_regression. predict_proba (X_test)[::,1]
fpr, tpr, _ = metrics. roc_curve (y_test, y_pred_proba)
auc = metrics. roc_auc_score (y_test, y_pred_proba)

#create ROC curve
plt. plot (fpr,tpr,label=" AUC= "+str(auc))
plt. ylabel (' True Positive Rate ')
plt. xlabel (' False Positive Rate ')
plt. legend (loc=4)
plt. show () 

A AUC deste modelo de regressão logística é 0,5602 . Como este valor está próximo de 0,5, isso confirma que o modelo está fazendo um mau trabalho na classificação dos dados.

Relacionado: Como traçar múltiplas curvas ROC em Python

Add a Comment

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