Trazar una curva ROC en Python
- Definición de curva ROC en Python
- Biblioteca Scikit-Learn en Python
- Código Python para trazar la curva ROC
- Explicación del código
En esta guía, lo ayudaremos a conocer más sobre esta función de Python y el método que puede usar para trazar una curva ROC como resultado del programa.
Definición de curva ROC en Python
El término curva ROC significa curva de características operativas del receptor. Esta curva es básicamente una representación gráfica del desempeño de cualquier modelo de clasificación en todos los umbrales de clasificación.
Hay dos parámetros de esta curva:
- Tasa de verdaderos positivos (TPR): representa la sensibilidad real, es decir, la verdadera
- Tasa de falsos positivos (FPR): significa pseudo, es decir, falsa sensibilidad
Ambos parámetros se conocen como características operativas y se utilizan como factores para definir la curva ROC.
En Python, la eficiencia del modelo se determina al ver el área bajo la curva (AUC). Por tanto, el modelo más eficiente tiene el AUC igual a 1 y el modelo menos eficiente tiene el AUC igual a 0,5.
Biblioteca Scikit-Learn en Python
La biblioteca Scikit-learn
es una de las bibliotecas de código abierto más importantes que se utilizan para realizar el aprendizaje automático en Python. Esta biblioteca consta de muchas herramientas para tareas como clasificación, agrupación y regresión.
En este tutorial, se utilizan varias funciones de esta biblioteca que ayudarán a trazar la curva ROC. Estas funciones son:
make_classification
: esta función se importa porque ayuda a generar un problema de clasificación aleatorio de n clases mediante la creación de grupos de puntos.RandomForestClassifier
: esta función se importa comoRandom Forest Classifier
y se utiliza como modelo de muestra en este tutorial en el que se realiza la curva ROC.train_test_split
: esta función se utiliza para dividir todos los datos en dos subconjuntos (Train
yTest
) que se utilizan para entrenar y probar los datos.roc_curve
: esta función se utiliza para devolver la curva ROC de un modelo dado.
Código Python para trazar la curva ROC
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve
def plot_roc_curve(fper, tper):
plt.plot(fper, tper, color="red", label="ROC")
plt.plot([0, 1], [0, 1], color="green", linestyle="--")
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.title("Receiver Operating Characteristic Curve")
plt.legend()
plt.show()
data_X, cls_lab = make_classification(
n_samples=2100, n_classes=2, weights=[1, 1], random_state=2
)
train_X, test_X, train_y, test_y = train_test_split(
data_X, cls_lab, test_size=0.5, random_state=2
)
model = RandomForestClassifier()
model.fit(train_X, train_y)
prob = model.predict_proba(test_X)
prob = probs[:, 1]
fper, tper, thresholds = roc_curve(test_y, prob)
plot_roc_curve(fper, tper)
Producción:
Explicación del código
Primero, se importan todas las bibliotecas y funciones necesarias para trazar una curva ROC. Luego se define una función llamada plot_roc_curve
en la que todos los factores críticos de la curva como el color, las etiquetas y el título se mencionan utilizando la biblioteca Matplotlib
. Después de eso, la función make_classification
se utiliza para hacer muestras aleatorias, y luego se dividen en conjuntos train
y test
con la ayuda de la función train_test_split
. Aquí, la relación train-test
de los datos es 0.50
. Luego, el algoritmo RandomForestClassifier
se utiliza para ajustar los datos train_X
y train_y
. Finalmente, la función roc_curve
se utiliza para trazar la Curva ROC.
Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.
LinkedIn