Crear visualizaciones con objetos de visualización

Beginner

This tutorial is from open-source community. Access the source code

Introducción

En este laboratorio, aprenderemos a crear visualizaciones con objetos de visualización utilizando scikit-learn. Los objetos de visualización son clases que nos permiten crear visualizaciones directamente a partir de sus respectivas métricas. En este laboratorio, usaremos los objetos de visualización ConfusionMatrixDisplay, RocCurveDisplay y PrecisionRecallDisplay para crear visualizaciones para un problema de clasificación binaria.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Cargar datos y entrenar el modelo

Para este ejemplo, usaremos un conjunto de datos de un centro de servicios de donación de sangre de OpenML. La variable objetivo es si una persona donó sangre. Primero, los datos se dividen en conjuntos de entrenamiento y prueba, y luego se ajusta un modelo de regresión logística con el conjunto de entrenamiento.

from sklearn.datasets import fetch_openml
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

X, y = fetch_openml(data_id=1464, return_X_y=True, parser="pandas")
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y)

clf = make_pipeline(StandardScaler(), LogisticRegression(random_state=0))
clf.fit(X_train, y_train)

Crear ConfusionMatrixDisplay

Con el modelo ajustado, calculamos las predicciones del modelo en el conjunto de prueba. Estas predicciones se utilizan para calcular la matriz de confusión que se representa con ConfusionMatrixDisplay.

from sklearn.metrics import confusion_matrix
from sklearn.metrics import ConfusionMatrixDisplay

y_pred = clf.predict(X_test)
cm = confusion_matrix(y_test, y_pred)

cm_display = ConfusionMatrixDisplay(cm).plot()

Crear RocCurveDisplay

La curva ROC requiere las probabilidades o los valores de decisión no umbralizados del estimador. Dado que la regresión logística proporciona una función de decisión, la usaremos para trazar la curva ROC.

from sklearn.metrics import roc_curve
from sklearn.metrics import RocCurveDisplay

y_score = clf.decision_function(X_test)

fpr, tpr, _ = roc_curve(y_test, y_score, pos_label=clf.classes_[1])
roc_display = RocCurveDisplay(fpr=fpr, tpr=tpr).plot()

Crear PrecisionRecallDisplay

Del mismo modo, la curva de precisión - recuperación se puede trazar usando y_score de la sección anterior.

from sklearn.metrics import precision_recall_curve
from sklearn.metrics import PrecisionRecallDisplay

prec, recall, _ = precision_recall_curve(y_test, y_score, pos_label=clf.classes_[1])
pr_display = PrecisionRecallDisplay(precision=prec, recall=recall).plot()

Combinar objetos de visualización en una sola gráfica

Los objetos de visualización almacenan los valores calculados que se pasaron como argumentos. Esto permite combinar fácilmente las visualizaciones usando la API de Matplotlib. En el siguiente ejemplo, colocamos las visualizaciones una al lado de la otra en una fila.

import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 8))

roc_display.plot(ax=ax1)
pr_display.plot(ax=ax2)
plt.show()

Resumen

En este laboratorio, aprendimos cómo crear visualizaciones con objetos de visualización usando scikit - learn. Usamos los objetos de visualización ConfusionMatrixDisplay, RocCurveDisplay y PrecisionRecallDisplay para crear visualizaciones para un problema de clasificación binaria. Primero cargamos los datos y entrenamos un modelo de regresión logística. Luego creamos la matriz de confusión, la curva ROC y la curva de precisión - recuperación usando objetos de visualización. Finalmente, combinamos los objetos de visualización en una sola gráfica usando la API de Matplotlib.