Passer au contenu principal

fonction confusion_matrix

confusion_matrix(
    probs: 'Sequence[Sequence[float]] | None' = None,
    y_true: 'Sequence[T] | None' = None,
    preds: 'Sequence[T] | None' = None,
    class_names: 'Sequence[str] | None' = None,
    title: 'str' = 'Confusion Matrix Curve',
    split_table: 'bool' = False
) → CustomChart
Construit une matrice de confusion à partir d’une séquence de probabilités ou de prédictions. Arguments :
  • probs : Une séquence de probabilités prédites pour chaque classe. La forme de la séquence doit être (N, K), où N est le nombre d’échantillons et K le nombre de classes. Si probs est fourni, preds ne doit pas être fourni.
  • y_true : Une séquence d’étiquettes réelles.
  • preds : Une séquence d’étiquettes de classes prédites. Si preds est fourni, probs ne doit pas être fourni.
  • class_names : Séquence de noms de classes. Si elle n’est pas fournie, les noms de classes seront définis comme “Class_1”, “Class_2”, etc.
  • title : Titre du graphique de matrice de confusion.
  • split_table : Indique si le tableau doit être placé dans une section distincte de l’interface W&B. Si True, le tableau sera affiché dans une section nommée “Custom Chart Tables”. La valeur par défaut est False.
Retourne :
  • CustomChart : Un objet de graphique personnalisé pouvant être enregistré dans W&B. Pour enregistrer le graphique, passez-le à wandb.log().
Exceptions levées :
  • ValueError : Si probs et preds sont tous deux fournis, ou si le nombre de prédictions et d’étiquettes réelles n’est pas identique. Si le nombre de classes prédites uniques dépasse le nombre de noms de classes, ou si le nombre d’étiquettes réelles uniques dépasse le nombre de noms de classes.
  • wandb.Error : Si numpy n’est pas installé.
Exemples : Enregistrer une matrice de confusion avec des probabilités aléatoires pour une classification de la faune :
import numpy as np
import wandb

# Définir les noms de classes pour la faune sauvage
wildlife_class_names = ["Lion", "Tiger", "Elephant", "Zebra"]

# Générer des étiquettes réelles aléatoires (0 à 3 pour 10 échantillons)
wildlife_y_true = np.random.randint(0, 4, size=10)

# Générer des probabilités aléatoires pour chaque classe (10 échantillons x 4 classes)
wildlife_probs = np.random.rand(10, 4)
wildlife_probs = np.exp(wildlife_probs) / np.sum(
    np.exp(wildlife_probs),
    axis=1,
    keepdims=True,
)

# Initialiser le run W&B et journaliser la matrice de confusion
with wandb.init(project="wildlife_classification") as run:
    confusion_matrix = wandb.plot.confusion_matrix(
         probs=wildlife_probs,
         y_true=wildlife_y_true,
         class_names=wildlife_class_names,
         title="Wildlife Classification Confusion Matrix",
    )
    run.log({"wildlife_confusion_matrix": confusion_matrix})
Dans cet exemple, des probabilités aléatoires sont utilisées pour générer une matrice de confusion. Enregistrement d’une matrice de confusion avec des prédictions simulées d’un modèle et une exactitude de 85 % :
import numpy as np
import wandb

# Définir les noms de classes pour la faune sauvage
wildlife_class_names = ["Lion", "Tiger", "Elephant", "Zebra"]

# Simuler les vraies étiquettes pour 200 images d'animaux (distribution déséquilibrée)
wildlife_y_true = np.random.choice(
    [0, 1, 2, 3],
    size=200,
    p=[0.2, 0.3, 0.25, 0.25],
)

# Simuler les prédictions du modèle avec une précision de 85 %
wildlife_preds = [
    y_t
    if np.random.rand() < 0.85
    else np.random.choice([x for x in range(4) if x != y_t])
    for y_t in wildlife_y_true
]

# Initialiser le run W&B et journaliser la matrice de confusion
with wandb.init(project="wildlife_classification") as run:
    confusion_matrix = wandb.plot.confusion_matrix(
         preds=wildlife_preds,
         y_true=wildlife_y_true,
         class_names=wildlife_class_names,
         title="Matrice de confusion de classification simulée de la faune sauvage",
    )
    run.log({"wildlife_confusion_matrix": confusion_matrix})
Dans cet exemple, des prédictions sont simulées avec une précision de 85 % afin de générer une matrice de confusion.