Matriz de confusão
Oito casos comparados com as previsões dão 3 verdadeiros positivos, 3 verdadeiros negativos, 1 falso positivo e 1 falso negativo. Cole os rótulos verdadeiros e os previstos na mesma ordem para obter as quatro contagens que dão origem à acurácia, à precisão e à sensibilidade. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Uma calculadora de matriz de confusão converte duas sequências alinhadas —os rótulos verdadeiros que você já conhece e os rótulos previstos que um modelo, um teste ou uma regra produziu— nas quatro contagens binárias com as quais começa todo relatório de classificação: verdadeiros positivos, verdadeiros negativos, falsos positivos e falsos negativos. Você envia os arrays emparelhados e, quando o problema não é um par óbvio de duas classes como um versus zero, nomeia a classe positiva. O motor percorre cada índice uma vez e incrementa a célula correspondente. Não há rede, nem aleatoriedade, nem relógio.
O que uma matriz de confusão conta e por que as quatro células importam
Uma matriz de confusão binária é a tabela de quatro células que registra como as previsões de um classificador se alinham aos rótulos de verdade de campo. Cada observação emparelhada cai em exatamente uma célula. Um verdadeiro positivo é um caso cujo rótulo verdadeiro é a classe positiva e cujo rótulo previsto também é a classe positiva: o modelo acertou ao disparar o alarme.
Um verdadeiro negativo é um caso cujo rótulo verdadeiro não é a classe positiva e cuja previsão também não é: o modelo acertou ao permanecer em silêncio. Um falso positivo é um erro do tipo I, um alarme falso: o rótulo verdadeiro é negativo, mas o modelo previu positivo. Um falso negativo é um erro do tipo II, uma omissão: o rótulo verdadeiro é positivo, mas o modelo previu negativo.
Esses quatro inteiros —verdadeiros positivos, verdadeiros negativos, falsos positivos e falsos negativos— são a matéria-prima da acurácia, da precisão, da revocação, da especificidade, do F1 e da correlação de Matthews, mas esta capacidade para nos contagens para que você componha essas pontuações derivadas como o relatório exigir. A varredura é um-contra-o-resto quando você nomeia uma classe positiva entre mais de dois rótulos: qualquer outro é tratado como negativo.
A implementação é um único passo determinístico, sem amostragem, sem rede e sem dependência da data atual, o que torna as quatro contagens seguras para fixar em goldens e gabaritos. Use-a quando você já tiver rótulos verdadeiros e previstos alinhados e precisar das quatro células, não de uma tabela multiclasse completa de cada par de classes.
Contrato de entrada, checagem de comprimento e como a classe positiva é escolhida
Números e booleanos são convertidos em strings para que o número um e o token 1 contem como o mesmo rótulo. O campo opcional positive nomeia a classe tratada como célula positiva da tabela dois por dois.
Quando você o omite, pares complementares conhecidos como 1 e 0, true e false, yes e no, positive e negative, pos e neg, p e n, ou spam e ham são inferidos; se só o token negativo de um par conhecido aparece, o nome positivo complementar é usado para que uma lista só de zeros vire todos verdadeiros negativos, e não uma tabela enganosa de todos verdadeiros positivos.
Em qualquer outro problema de duas classes o último rótulo distinto em ordem lexicográfica é tomado como positivo, no convênio habitual de rótulos ordenados. Mais de dois rótulos distintos sem um positive explícito é um erro, porque uma matriz de quatro células escolheria uma classe em silêncio. Em caso de sucesso o corpo devolve n, o rótulo positivo resolvido, um rótulo negative opcional quando existe exatamente um complemento, as quatro contagens e uma string formula curta.
Nada é armazenado depois que a resposta retorna.
Quem usa as quatro contagens da matriz
Tutoriais médicos e de triagem usam as mesmas quatro contagens para explicar sensibilidade e especificidade: verdadeiros positivos são os pacientes doentes que o exame detectou, falsos negativos são as omissões, falsos positivos são as pessoas saudáveis enviadas para acompanhamento e verdadeiros negativos são os casos corretamente liberados. Filas de spam, fraude e moderação vigiam falsos positivos porque cada um gasta um turno de revisão humana, e vigiam falsos negativos porque cada um é uma mensagem que vazou. Validação falha não consome saldo.
Mantenha as duas listas alinhadas, nomeie a classe positiva quando ela não for óbvia, e você obtém TP, TN, FP e FN reproduzíveis para lição de casa, CI e relatórios de produção sem levantar uma pilha estatística própria.
Casos de uso
Ensino de triagem e diagnóstico
Mostre como um exame médico ou de segurança reparte pacientes em acertos, omissões, alarmes falsos e liberações corretas a partir de duas listas de rótulos.
Lição de casa e correção automática
Fixe um exemplo conhecido 0/1 para que um corretor marque as quatro células sem aceitar como correta uma diagonal secundária trocada.
Perguntas frequentes
Como montar uma matriz de confusão a partir de rótulos verdadeiros e previstos?
Se quiser, defina positive para nomear a classe positiva.
O que acontece se os dois arrays de rótulos diferem em comprimento?
Emparelhar itens sobrantes inventaria coincidências, então listas desiguais são rejeitadas e não são cobradas.
Como a classe positiva é escolhida se você a omite?
Pares conhecidos como 1/0, true/false, yes/no e spam/ham são inferidos. Qualquer outro problema de duas classes usa o último rótulo distinto em ordem lexicográfica. Mais de duas classes exige um campo positive explícito.
Dá para pontuar um problema de várias classes?
Sim, como um-contra-o-resto: defina positive na classe que importa. Qualquer outro rótulo conta como negativo. A capacidade devolve as quatro células binárias, não uma tabela k por k completa.
Qual a diferença entre falso positivo e falso negativo?
Um falso positivo é um alarme falso, um erro do tipo I: o rótulo verdadeiro é negativo, mas a previsão diz positivo. Um falso negativo é um caso perdido, um erro do tipo II: era positivo e a previsão disse negativo.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"true_labels": [
"1",
"1",
"0",
"1",
"0",
"0",
"1",
"0"
],
"predicted_labels": [
"1",
"0",
"0",
"1",
"0",
"1",
"1",
"0"
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.confusion_matrix",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_n | 10000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Se os dois arrays diferem em comprimento, a tarefa falha com invalid_input em vez de inventar pares ou descartar sobras. Chamadas API bem-sucedidas custam US$ 0,002; entrada inválida não é cobrada.
O que uma matriz de confusão conta e por que as quatro células importam
Quando os dois arrays de entrada não têm o mesmo comprimento, o emparelhamento seria inventado, então a solicitação é rejeitada com invalid_input em vez de truncada ou preenchida.
Contrato de entrada, checagem de comprimento e como a classe positiva é escolhida
Envie por POST um corpo JSON com dois campos obrigatórios: true_labels, a classe de verdade de campo de cada observação, e predicted_labels, a classe que o modelo atribuiu àquela mesma observação. Os aliases y_true, actual, actual_labels e labels_true são aceitos na primeira lista; y_pred, predicted, preds e labels_pred na segunda, para que cadernos e formulários tipados reutilizem os nomes que já têm. Cada campo pode ser um array JSON de strings, números finitos ou booleanos, ou uma única string separada por vírgulas ou espaços quando um formulário publica texto simples. Tokens vazios, objetos, Infinity e NaN falham com invalid_input nomeando o campo. Ambas as listas devem conter pelo menos um rótulo e no máximo dez mil; arrays mais longos são rejeitados para que a memória fique limitada no caminho gratuito do navegador e no Worker. A regra decisiva é o comprimento igual: se true_labels e predicted_labels diferem em comprimento, a tarefa falha imediatamente, porque não há modo honesto de emparelhar itens sobrantes.
Onde uma API de matriz de confusão justifica o seu lugar
Scripts de avaliação de aprendizado de máquina precisam de um oráculo pequeno e determinístico que transforme uma lista de reserva de y_true e y_pred nas quatro células antes de calcular precisão ou revocação, sem puxar uma biblioteca completa de métricas para um Worker limitado ou uma demonstração no navegador. Painéis de produto que já guardam previsões ao lado de rótulos podem chamar a API a partir de um pipeline e armazenar só os quatro inteiros, baratos de acompanhar ao longo do tempo.
Casos de integração
Scripts de avaliação de modelos
Transforme y_true e y_pred alinhados de um conjunto de reserva em TP, TN, FP e FN antes de calcular precisão, revocação ou F1 em CI.
Perguntas técnicas
Quanto custa a calculadora de matriz de confusão?
A ferramenta do navegador é gratuita. Solicitações API usam saldo pré-pago a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.