Matrice de confusion de Scikit-Learn

Machine LearningMachine LearningBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

La matrice de confusion est un outil pour évaluer les performances d'un algorithme de classification. C'est un tableau qui résume les performances d'un modèle de classification en comparant les étiquettes de classe prédites avec les étiquettes de classe réelles. Ce tutoriel montre comment utiliser la bibliothèque scikit-learn pour générer une matrice de confusion et visualiser ses résultats.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder à Jupyter Notebook pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.


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{{"Matrice de confusion de Scikit-Learn"}} sklearn/metrics -.-> lab-49094{{"Matrice de confusion de Scikit-Learn"}} ml/sklearn -.-> lab-49094{{"Matrice de confusion de Scikit-Learn"}} end

Importation des bibliothèques

Tout d'abord, nous devons importer les bibliothèques nécessaires. Nous utiliserons scikit-learn, matplotlib, numpy et 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

Charger les données

Nous utiliserons l'ensemble de données iris de scikit-learn. L'ensemble de données contient 150 échantillons, chacun avec quatre caractéristiques et une étiquette cible.

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

Diviser les données

Nous allons diviser l'ensemble de données en un ensemble d'entraînement et un ensemble de test. L'ensemble d'entraînement sera utilisé pour entraîner le modèle, et l'ensemble de test sera utilisé pour évaluer les performances du modèle.

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

Entraîner le modèle

Nous allons entraîner un classifieur à vecteurs de support (SVM) utilisant un noyau linéaire. Nous utiliserons un paramètre de régularisation C trop bas pour voir l'impact sur les résultats.

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

Générer la matrice de confusion

Nous allons générer une matrice de confusion à l'aide de la classe ConfusionMatrixDisplay de scikit-learn. La matrice de confusion montrera le nombre de prédictions correctes et incorrectes pour chaque classe.

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

Visualiser la matrice de confusion

Nous allons visualiser la matrice de confusion à l'aide de matplotlib. Nous allons tracer à la fois une matrice de confusion non normalisée et une matrice de confusion normalisée.

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()

Sommaire

Dans ce tutoriel, nous avons appris à utiliser la bibliothèque scikit-learn pour générer une matrice de confusion et visualiser ses résultats. Nous avons chargé l'ensemble de données iris, l'avons divisé en ensembles d'entraînement et de test, avons entraîné un classifieur à vecteurs de support et avons généré et visualisé une matrice de confusion. La matrice de confusion a montré le nombre de prédictions correctes et incorrectes pour chaque classe, et la visualisation nous a aidé à interpréter les résultats.