Matrice de confusion
Huit cas comparés à leurs prédictions donnent 3 vrais positifs, 3 vrais négatifs, 1 faux positif et 1 faux négatif. Collez les libellés vrais et prédits dans le même ordre pour obtenir les quatre effectifs dont découlent l'exactitude, la précision et le rappel. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Un calculateur de matrice de confusion convertit deux suites alignées —les libellés vrais que vous connaissez déjà et les libellés prédits qu’un modèle, un test ou une règle a produits— en les quatre effectifs binaires par lesquels commence tout rapport de classification : vrais positifs, vrais négatifs, faux positifs et faux négatifs. Vous envoyez les tableaux appariés et, lorsque le problème n’est pas un couple évident de deux classes comme un contre zéro, vous nommez la classe positive. Le moteur parcourt chaque indice une seule fois et incrémente la cellule correspondante. Il n’y a ni réseau, ni hasard, ni horloge.
Ce qu’une matrice de confusion compte et pourquoi les quatre cellules importent
Une matrice de confusion binaire est le tableau à quatre cellules qui enregistre comment les prédictions d’un classifieur s’alignent sur les libellés de vérité terrain. Chaque observation appariée tombe dans exactement une cellule. Un vrai positif est un cas dont le libellé vrai est la classe positive et dont le libellé prédit l’est aussi : le modèle a eu raison de donner l’alerte.
Un vrai négatif est un cas dont le libellé vrai n’est pas la classe positive et dont la prédiction ne l’est pas non plus : le modèle a eu raison de rester silencieux. Un faux positif est une erreur de type I, une fausse alerte : le libellé vrai est négatif mais le modèle a prédit positif. Un faux négatif est une erreur de type II, un oubli : le libellé vrai est positif mais le modèle a prédit négatif.
Ces quatre entiers —vrais positifs, vrais négatifs, faux positifs et faux négatifs— sont la matière première de l’exactitude, de la précision, du rappel, de la spécificité, du F1 et de la corrélation de Matthews, mais cette capacité s’arrête aux effectifs afin que vous composiez ces scores dérivés comme l’exige votre rapport. Le parcours est un-contre-reste lorsque vous nommez une classe positive parmi plus de deux libellés : tout autre est traité comme négatif.
L’implémentation est un unique passage déterministe, sans échantillonnage, sans réseau et sans dépendance à la date du jour, ce qui rend les quatre effectifs sûrs à figer dans des goldens et des corrigés. Utilisez-la lorsque vous avez déjà des libellés vrais et prédits alignés et que vous avez besoin des quatre cellules, non d’un tableau multiclasse complet de chaque paire de classes.
Contrat d’entrée, contrôle de longueur et choix de la classe positive
Les nombres et les booléens sont convertis en chaînes pour que le nombre un et le jeton 1 comptent comme le même libellé. Le champ facultatif positive nomme la classe traitée comme cellule positive du tableau deux par deux.
Lorsque vous l’omettez, des paires complémentaires connues telles que 1 et 0, true et false, yes et no, positive et negative, pos et neg, p et n, ou spam et ham sont déduites ; si seul le jeton négatif d’une paire connue apparaît, le nom positif complémentaire est utilisé pour qu’une liste de zéros devienne uniquement des vrais négatifs plutôt qu’un tableau trompeur de vrais positifs.
Pour tout autre problème à deux classes, le dernier libellé distinct dans l’ordre lexicographique est pris comme positif, selon la convention habituelle des libellés triés. Plus de deux libellés distincts sans positive explicite est une erreur, car une matrice à quatre cellules choisirait sinon une classe en silence. En cas de succès, le corps renvoie n, le libellé positif résolu, un libellé negative facultatif lorsqu’exactement un complément est présent, les quatre effectifs et une courte chaîne formula.
Rien n’est conservé après le renvoi de la réponse.
Qui utilise les quatre effectifs de la matrice
Les tutoriels médicaux et de dépistage utilisent les mêmes quatre effectifs pour expliquer sensibilité et spécificité : les vrais positifs sont les patients malades que le test a détectés, les faux négatifs sont les oublis, les faux positifs sont les personnes saines envoyées en suivi, et les vrais négatifs sont les cas correctement écartés. Les files de pourriel, de fraude et de modération surveillent les faux positifs parce que chacun consomme un créneau de relecture humaine, et les faux négatifs parce que chacun est un message qui a fuité.
Un échec de validation ne consomme pas le solde. Gardez les deux listes alignées, nommez la classe positive lorsqu’elle n’est pas évidente, et vous obtenez des TP, TN, FP et FN reproductibles pour les devoirs, la CI et les rapports de production, sans dresser votre propre pile statistique.
Cas d’usage
Enseignement du dépistage et du diagnostic
Montrez comment un test médical ou de sécurité répartit les patients en détections, oublis, fausses alertes et écarts corrects à partir de deux listes de libellés.
Devoirs et correction automatique
Figez un exemple connu 0/1 pour qu’un correcteur note les quatre cellules sans accepter comme juste une diagonale secondaire inversée.
Questions fréquentes
Comment construire une matrice de confusion à partir de libellés vrais et prédits ?
Définissez au besoin positive pour nommer la classe positive.
Que se passe-t-il si les deux tableaux de libellés diffèrent en longueur ?
Apparier le surplus inventerait des correspondances, donc les listes inégales sont rejetées et ne sont pas facturées.
Comment la classe positive est-elle choisie si vous l’omettez ?
Des paires connues telles que 1/0, true/false, yes/no et spam/ham sont déduites. Tout autre problème à deux classes utilise le dernier libellé distinct dans l’ordre lexicographique. Plus de deux classes exige un champ positive explicite.
Peut-on noter un problème à plusieurs classes ?
Oui, en un-contre-reste : définissez positive sur la classe qui vous importe. Tout autre libellé compte comme négatif. La capacité renvoie les quatre cellules binaires, non un tableau k par k complet.
Quelle différence entre un faux positif et un faux négatif ?
Un faux positif est une fausse alerte, une erreur de type I : le libellé vrai est négatif mais la prédiction annonce positif. Un faux négatif est un cas manqué, une erreur de type II : le cas était positif et la prédiction a dit négatif.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/stat/confusion-matrix \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"true_labels":["1","1","0","1","0","0","1","0"],"predicted_labels":["1","0","0","1","0","1","1","0"]}'const res = await fetch("https://api.kit.forhosting.com/stat/confusion-matrix", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"true_labels": [
"1",
"1",
"0",
"1",
"0",
"0",
"1",
"0"
],
"predicted_labels": [
"1",
"0",
"0",
"1",
"0",
"1",
"1",
"0"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/confusion-matrix",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"true_labels": [
"1",
"1",
"0",
"1",
"0",
"0",
"1",
"0"
],
"predicted_labels": [
"1",
"0",
"0",
"1",
"0",
"1",
"1",
"0"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/confusion-matrix", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"true_labels":["1","1","0","1","0","0","1","0"],"predicted_labels":["1","0","0","1","0","1","1","0"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"true_labels":["1","1","0","1","0","0","1","0"],"predicted_labels":["1","0","0","1","0","1","1","0"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/confusion-matrix", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"true_labels": [
"1",
"1",
"0",
"1",
"0",
"0",
"1",
"0"
],
"predicted_labels": [
"1",
"0",
"0",
"1",
"0",
"1",
"1",
"0"
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.confusion_matrix",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_n | 10000 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Si les deux tableaux diffèrent en longueur, la tâche échoue avec invalid_input au lieu d’inventer des paires ou d’écarter le surplus. Les appels API réussis coûtent $0.002 ; une entrée invalide n’est pas facturée.
Ce qu’une matrice de confusion compte et pourquoi les quatre cellules importent
Lorsque les deux tableaux d’entrée n’ont pas la même longueur, l’appariement serait inventé, donc la requête est rejetée avec invalid_input plutôt que tronquée ou complétée.
Contrat d’entrée, contrôle de longueur et choix de la classe positive
Envoyez par POST un corps JSON avec deux champs obligatoires : true_labels, la classe de vérité terrain de chaque observation, et predicted_labels, la classe que le modèle a attribuée à cette même observation. Les alias y_true, actual, actual_labels et labels_true sont acceptés pour la première liste ; y_pred, predicted, preds et labels_pred pour la seconde, afin que carnets et formulaires typés réutilisent les noms qu’ils ont déjà. Chaque champ peut être un tableau JSON de chaînes, de nombres finis ou de booléens, ou une seule chaîne séparée par des virgules ou des espaces lorsqu’un formulaire envoie du texte brut. Les jetons vides, les objets, Infinity et NaN échouent avec invalid_input en nommant le champ. Les deux listes doivent contenir au moins un libellé et au plus dix mille ; les tableaux plus longs sont rejetés afin que la mémoire reste bornée sur le chemin gratuit du navigateur et sur le Worker. La règle décisive est l’égalité des longueurs : si true_labels et predicted_labels diffèrent en longueur, la tâche échoue immédiatement, car il n’existe aucun moyen honnête d’apparier les éléments en trop.
Où une API de matrice de confusion justifie sa place
Les scripts d’évaluation d’apprentissage automatique ont besoin d’un petit oracle déterministe qui transforme une liste de réserve de y_true et y_pred en les quatre cellules avant de calculer précision ou rappel, sans tirer une bibliothèque complète de métriques dans un Worker contraint ou une démonstration navigateur. Les tableaux de bord produit qui stockent déjà prédictions et libellés côte à côte peuvent appeler l’API depuis un pipeline et ne conserver que les quatre entiers, bon marché à suivre dans le temps.
Cas d'intégration
Scripts d’évaluation de modèles
Transformez y_true et y_pred alignés d’un jeu de réserve en TP, TN, FP et FN avant de calculer précision, rappel ou F1 en CI.
Questions techniques
Combien coûte le calculateur de matrice de confusion ?
L’outil du navigateur est gratuit. Les requêtes API utilisent un solde prépayé à $0.002 par appel réussi ; une entrée invalide n’est pas facturée.