Cómo trazar una curva ROC en Python (paso a paso)

La regresión logística es un método estadístico que utilizamos para ajustar un modelo de regresión cuando la variable de respuesta es binaria. Para evaluar qué tan bien se ajusta un modelo de regresión logística a un conjunto de datos, podemos observar las siguientes dos métricas:

  • Sensibilidad: la probabilidad de que el modelo prediga un resultado positivo para una observación cuando en realidad el resultado es positivo. Esto también se denomina «tasa positiva verdadera».
  • Especificidad: La probabilidad de que el modelo prediga un resultado negativo para una observación cuando en realidad el resultado es negativo. Esto también se denomina «tasa negativa verdadera».

Una forma de visualizar estas dos métricas es creando una curva ROC , que significa curva de “característica operativa del receptor”. Esta es una gráfica que muestra la sensibilidad y especificidad de un modelo de regresión logística.

El siguiente ejemplo paso a paso muestra cómo crear e interpretar una curva ROC en Python.

Paso 1: importar los paquetes necesarios

Primero, importaremos los paquetes necesarios para realizar la regresión logística en Python:

importar pandas como pd
 importar numpy como np
 desde sklearn. model_selection  importar train_test_split
 desde sklearn. linear_model  import LogisticRegression
 desde sklearn import metrics
 import matplotlib. pyplot  como plt

Paso 2: Ajustar el modelo de regresión logística

A continuación, importaremos un conjunto de datos y le ajustaremos un modelo de regresión logística:

#importar conjunto de datos del archivo CSV en Github
 url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/default.csv"
datos = pd. read_csv (url)

#definir las variables predictoras y la variable de respuesta
 X = datos [[' estudiante ', ' saldo ', ' ingresos ']]
y = datos [' predeterminado ']

#dividir el conjunto de datos en entrenamiento (70%) y pruebas (30%) conjuntos
 X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.3, random_state = 0)

#instalar el modelo
 log_regression = LogisticRegression ()

#ajuste el modelo usando los datos de entrenamiento
 log_regression. ajuste (X_train, y_train)

Paso 3: trazar la curva ROC

A continuación, calcularemos la tasa de verdaderos positivos y la tasa de falsos positivos y crearemos una curva ROC utilizando el paquete de visualización de datos Matplotlib:

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

#create plt de la curva ROC
 . trama (fpr, tpr)
plt. ylabel (' Tasa de verdaderos positivos ')
plt. xlabel (' Tasa de falsos positivos ')
plt. mostrar ()

Cuanto más abraza la curva la esquina superior izquierda del gráfico, mejor lo hace el modelo para clasificar los datos en categorías.

Como podemos ver en el gráfico anterior, este modelo de regresión logística hace un trabajo bastante pobre al clasificar los datos en categorías.

Para cuantificar esto, podemos calcular el AUC (área bajo la curva) que nos dice qué parte del gráfico se encuentra debajo de la curva.

Cuanto más cerca esté el AUC de 1, mejor será el modelo. Un modelo con un AUC igual a 0.5 no es mejor que un modelo que hace clasificaciones aleatorias.

Paso 4: Calcule el AUC

Podemos usar el siguiente código para calcular el AUC del modelo y mostrarlo en la esquina inferior derecha del gráfico ROC:

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

#create plt de la curva ROC
 . plot (fpr, tpr, label = " AUC = " + str (auc))
plt. ylabel (' Tasa de verdaderos positivos ')
plt. xlabel (' Tasa de falsos positivos ')
plt. leyenda (loc = 4)
plt. mostrar ()

El AUC para este modelo de regresión logística resulta ser 0.5602 . Dado que está cerca de 0,5, esto confirma que el modelo hace un mal trabajo al clasificar los datos.

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

La tabla de distribución F es una tabla que muestra los valores críticos de la distribución F. Para usar la…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!