Curva ROC con API de visualización

Scikit-learn define una API simple para crear visualizaciones para el aprendizaje automático. Las características clave de esta API es permitir un graficado rápido y ajustes visuales sin recalcular. En este ejemplo, demostraremos cómo utilizar la API de visualización comparando curvas ROC.

print(__doc__)

Cargar los Datos y Entrenar un SVC

Primero, cargamos el conjunto de datos sobre vinos y lo convertimos en un problema de clasificación binaria. Luego, entrenamos un clasificador de vectores de soporte en un conjunto de datos de entrenamiento.

import matplotlib.pyplot as plt
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import plot_roc_curve
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split

X, y = load_wine(return_X_y=True)
y = y == 2

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
svc = SVC(random_state=42)
svc.fit(X_train, y_train)
SVC(random_state=42)


Gráfico de la curva ROC

A continuación, graficamos la curva ROC con una sola invocación a sklearn.metrics.plot_roc_curve. El objeto svc_disp devuelto nos permite seguir utilizando la curva ROC ya calculada para el SVC en futuros gráficos.

svc_disp = plot_roc_curve(svc, X_test, y_test)
plt.show()
plot roc curve visualization api

Entrenamiento de un Bosque Aleatorio y Graficación de la Curva ROC

Entrenamos un clasificador de bosque aleatorio y creamos un gráfico comparándolo con la curva ROC de SVC. Observa que svc_disp utiliza plot para trazar la curva ROC de SVC sin volver a calcular los valores de la propia curva roc. Además, pasamos alpha=0.8 a las funciones del gráfico para ajustar los valores alfa de las curvas.

rfc = RandomForestClassifier(n_estimators=10, random_state=42)
rfc.fit(X_train, y_train)
ax = plt.gca()
rfc_disp = plot_roc_curve(rfc, X_test, y_test, ax=ax, alpha=0.8)
svc_disp.plot(ax=ax, alpha=0.8)
plt.show()
plot roc curve visualization api

Tiempo total de ejecución del script: (0 minutos 0.302 segundos)

Galería generada por Sphinx-Gallery