Matriz de confusión de Scikit-Learn

Machine LearningMachine LearningBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

La matriz de confusión es una herramienta para evaluar el rendimiento de un algoritmo de clasificación. Es una tabla que resume el rendimiento de un modelo de clasificación al comparar las etiquetas de clase predichas con las etiquetas de clase reales. En este tutorial se demuestra cómo usar la biblioteca scikit-learn para generar una matriz de confusión y visualizar sus resultados.

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 su retroalimentación después de la sesión y lo resolveremos rápidamente para usted.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/model_selection("Model Selection") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/metrics("Metrics") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/model_selection -.-> lab-49094{{"Matriz de confusión de Scikit-Learn"}} sklearn/metrics -.-> lab-49094{{"Matriz de confusión de Scikit-Learn"}} ml/sklearn -.-> lab-49094{{"Matriz de confusión de Scikit-Learn"}} end

Importar bibliotecas

En primer lugar, necesitamos importar las bibliotecas necesarias. Usaremos scikit-learn, matplotlib, numpy y datasets.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import ConfusionMatrixDisplay

Cargar datos

Usaremos el conjunto de datos iris de scikit-learn. El conjunto de datos contiene 150 muestras, cada una con cuatro características y una etiqueta de destino.

iris = datasets.load_iris()
X = iris.data
y = iris.target
class_names = iris.target_names

Dividir datos

Dividiremos el conjunto de datos en un conjunto de entrenamiento y un conjunto de prueba. El conjunto de entrenamiento se utilizará para entrenar el modelo, y el conjunto de prueba se utilizará para evaluar el rendimiento del modelo.

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

Entrenar el modelo

Entrenaremos un clasificador de máquinas de vectores de soporte (SVM) con un kernel lineal. Usaremos un parámetro de regularización C demasiado bajo para ver el impacto en los resultados.

classifier = svm.SVC(kernel="linear", C=0.01).fit(X_train, y_train)

Generar matriz de confusión

Generaremos una matriz de confusión utilizando la clase ConfusionMatrixDisplay de scikit-learn. La matriz de confusión mostrará la cantidad de predicciones correctas e incorrectas para cada clase.

np.set_printoptions(precision=2)
disp = ConfusionMatrixDisplay.from_estimator(
    classifier,
    X_test,
    y_test,
    display_labels=class_names,
    cmap=plt.cm.Blues,
    normalize=None,
)

Visualizar la matriz de confusión

Visualizaremos la matriz de confusión utilizando matplotlib. Graficaremos tanto una matriz de confusión no normalizada como una matriz de confusión normalizada.

titles_options = [
    ("Confusion matrix, without normalization", None),
    ("Normalized confusion matrix", "true"),
]
for title, normalize in titles_options:
    disp = ConfusionMatrixDisplay.from_estimator(
        classifier,
        X_test,
        y_test,
        display_labels=class_names,
        cmap=plt.cm.Blues,
        normalize=normalize,
    )
    disp.ax_.set_title(title)
    print(title)
    print(disp.confusion_matrix)
plt.show()

Resumen

En este tutorial, aprendimos cómo utilizar la biblioteca scikit-learn para generar una matriz de confusión y visualizar sus resultados. Cargamos el conjunto de datos iris, lo dividimos en conjuntos de entrenamiento y prueba, entrenamos un clasificador de máquinas de vectores de soporte y generamos y visualizamos una matriz de confusión. La matriz de confusión mostró la cantidad de predicciones correctas e incorrectas para cada clase, y la visualización nos ayudó a interpretar los resultados.