混同行列計算機
8件を予測と比べると、真陽性3、真陰性3、偽陽性1、偽陰性1になります。正解と予測のラベルを同じ順番で貼り付ければ、正解率や適合率、再現率のもとになる4つの件数が分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
混同行列計算機は、すでに分かっている正解ラベルと、モデル・検査・規則が出力した予測ラベルという、揃った二つの系列を、分類報告の出発点となる四つの二値カウント(真陽性・真陰性・偽陽性・偽陰性)へ変換します。対になった配列を送り、一対ゼロのような自明な二クラス対でない場合は陽性クラスを指定します。エンジンは各添字を一度だけ見て、該当するセルを増やします。ネットワークも乱数も時計も使いません。
混同行列が数えるものと、四つのセルが大切な理由
二値の混同行列は、分類器の予測が実測の正解ラベルとどう揃うかを記録する四セルの表です。対になった各観測は、ちょうど一つのセルに入ります。真陽性は、正解が陽性クラスで予測も陽性クラスである事例で、モデルは正しく警報を上げています。
真陰性は、正解が陽性クラスではなく予測も陽性ではない事例で、モデルは正しく沈黙しています。偽陽性は第 I 種の誤り、つまり誤報で、正解は陰性なのにモデルが陽性と予測したケースです。偽陰性は第 II 種の誤り、つまり見逃しで、正解は陽性なのにモデルが陰性と予測したケースです。
真陽性・真陰性・偽陽性・偽陰性という四つの整数は、正解率・適合率・再現率・特異度・F1・マシューズ相関の原料ですが、本能力はカウント自体で止まり、導出指標は報告の必要に合わせて組み立てられます。陽性クラスを三つ以上のラベルから指定すると走査は一対他になり、それ以外はすべて陰性として扱います。
すでに揃った正解と予測があり、全クラス対の多次元表ではなく四セルだけが必要なときに使ってください。
入力契約、長さ検査、陽性クラスの決め方
数と真偽値は文字列へ変換され、数値の 1 とトークン 1 は同じラベルになります。決定的な規則は長さの一致です。任意の positive は、二行二列の表の陽性セルとして扱うクラスを名付けます。
省略すると、1 と 0、true と false、yes と no、positive と negative、pos と neg、p と n、spam と ham といった既知の相補対を推論します。既知対の陰性トークンだけが現れた場合は相補の陽性名を使い、ゼロだけのリストが誤ってすべて真陽性になるのではなく、すべて真陰性になります。
それ以外の二クラス問題では、整列ラベルの通例どおり、辞書順で最後の相異なるラベルを陽性とします。相異なるラベルが三つ以上あるのに positive を明示しないのは誤りで、四セル行列が黙ってクラスを選ぶのを防ぎます。
成功時の本体は n、解決した陽性ラベル、補完がちょうど一つあるときの任意の negative、四つのカウント、短い formula 文字列を返します。応答のあと何も保存しません。
混同行列が役立つ場面
医療やスクリーニングの教材は、同じ四カウントで感度と特異度を説明します。真陽性は検査が捉えた患者、偽陰性は見逃し、偽陽性は追跡へ回された健常者、真陰性は正しく除外された事例です。迷惑メール・詐欺・モデレーションの待ち行列は、偽陽性を人間の確認枠の浪費として、偽陰性を漏れた一件として監視します。
検証失敗は残高を消費しません。二つのリストを揃え、自明でないときは陽性クラスを名付ければ、宿題・CI・本番報告向けに再現可能な TP・TN・FP・FN が得られ、自前の統計基盤を立てる必要はありません。
活用例
スクリーニングと診断の教材
医療検査や保安検査が、二つのラベルリストから患者を捕捉・見逃し・誤報・正しい除外に分ける様子を示します。
宿題と自動採点
既知の 0/1 例を固定し、採点が対角外の入れ替えを正解と認めないように四セルを採点します。
よくある質問
二つのラベル配列の長さが違うとどうなりますか?
余った要素を対にすると一致をでっち上げるため、長さの違うリストは拒否され、課金されません。
省略したとき、陽性クラスはどう決まりますか?
1/0、true/false、yes/no、spam/ham などの既知対を推論します。それ以外の二クラス問題は辞書順で最後の相異なるラベルを使います。クラスが三つ以上なら明示的な positive が必要です。
多クラス問題を採点できますか?
できます。 一対他として、関心のあるクラスを positive に設定します。他のラベルはすべて陰性です。能力が返すのは四つの二値セルであり、完全な k 行 k 列の表ではありません。
偽陽性と偽陰性は何が違いますか?
偽陽性は誤った警報、つまり第1種の誤りで、正解は陰性なのに予測が陽性と判断したものです。偽陰性は見逃し、つまり第2種の誤りで、陽性だったのに予測が陰性としたものです。
正解率や適合率、再現率も計算しますか?
いいえ。このツールは4つの件数だけを返します。正解率、適合率、再現率、特異度などは、報告の目的に合わせてこの件数から組み立ててください。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
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)リクエスト例
{
"true_labels": [
"1",
"1",
"0",
"1",
"0",
"0",
"1",
"0"
],
"predicted_labels": [
"1",
"0",
"0",
"1",
"0",
"1",
"1",
"0"
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.confusion_matrix",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_n | 10000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
二つの配列の長さが違うと、対をでっち上げたり余りを捨てたりせず、invalid_input で失敗します。同じ純粋関数がブラウザ無料経路と API の両方で動くため、宿題の解答、評価スクリプト、CI の固定値は食い違いません。成功した API 呼び出しは $0.002、不正な入力は課金されません。
混同行列が数えるものと、四つのセルが大切な理由
二つの入力配列の長さが同じでないとき、対はでっち上げになるため、切り詰めや埋め込みではなく invalid_input で拒否します。
入力契約、長さ検査、陽性クラスの決め方
必須フィールド二つを含む JSON 本体を POST します。true_labels は各観測の実測クラス、predicted_labels はその観測にモデルが付けたクラスです。前者には別名 y_true、actual、actual_labels、labels_true を、後者には y_pred、predicted、preds、labels_pred を受け付けるので、ノートや型付きフォームは既にある名前を再利用できます。各フィールドは文字列・有限数・真偽値の JSON 配列でも、フォームが平文を送るときのカンマ区切りまたは空白区切りの一つの文字列でも構いません。空トークン、オブジェクト、Infinity、NaN はフィールド名付きの invalid_input で失敗します。両方のリストはラベルを少なくとも一つ、多くて一万個まで含み、それより長い配列は無料ブラウザ経路と Worker のメモリ上限のため拒否されます。true_labels と predicted_labels の長さが違うと、余りを誠実に対にする方法がないため、直ちに失敗します。
混同行列 API が役立つ場面
機械学習の評価スクリプトは、ホールドアウトの y_true と y_pred を適合率や再現率の前に四セルへ変える、小さく決定的なオラクルを必要とし、制約のある Worker やブラウザデモへ計量ライブラリ一式を引き込みたくありません。予測をラベルの横に既に持つ製品ダッシュボードは、パイプラインから API を呼び、推移が安価な四整数だけを保存できます。
連携の活用例
モデル評価スクリプト
ホールドアウト集合の揃った y_true と y_pred を、CI で適合率・再現率・F1 を出す前に TP・TN・FP・FN へ変換します。
技術的な質問
正解ラベルと予測ラベルから混同行列をどう作りますか。
同じ長さの true_labels と predicted_labels を送ってください。必要なら positive で陽性クラスを名付けます。応答は true_positives、true_negatives、false_positives、false_negatives を返します。
混同行列計算機の料金はいくらですか。
ブラウザの用具は無料です。API 要求は成功一件あたり $0.002 の前払い残高を使い、不正な入力は課金されません。