Skip to content

Main content

Confusion Joint Rate Table

Explicit nonnegative square confusion table with unique supplied labels, actual rows and predicted columns; normalize joint observed weight by total support, preserving null on a zero-total table; does not estimate a joint population distribution.

Loading tool…

Description

Normalize joint observed weight by total support, preserving null on a zero-total table; does not estimate a joint population distribution.

A confusion table uses actual labels as rows and predicted labels as columns. Cells can contain occurrence counts or supplied nonnegative weights; the axis label order must stay with the matrix. Row, column and joint normalization have different denominators, and a zero denominator needs an explicit undefined result.

Normalize joint observed weight by total support, preserving null on a zero-total table; does not estimate a joint population distribution.

When to use this tool

Use this tool to normalize joint observed weight by total support, preserving null on a zero-total table; does not estimate a joint population distribution.

How to use the tool and how it works

  1. Enter matrix, labels using the input definitions below.
  2. Run the operation. Resolve malformed-input errors before interpreting the result.
  3. Read result.total, result.rates. Interpret signs, units, ordering and null values using the rules below.

Divide every cell by the total table weight. Return that total and emit null in every cell if total is zero.1

Input fieldMeaning and unitsAccepted input
matrixSquare nonnegative finite table: matrix[actualIndex][predictedIndex], both axes in labels order.Dense list of at most 128 rows of at most 128 finite numbers; the operation’s shape constraints also apply.
labelsDistinct label strings defining actual row and predicted column order; score tools require at least one label.Dense list of at most 128 strings, each at most 8,192 UTF-16 code units.
Output fieldInterpretation
resultObject containing the fields below.
result.totalTotal supplied table support.
result.ratesCells divided by the whole-table total; every cell is null if total is zero.
json
{
  "input": {
    "matrix": [
      [
        2,
        1
      ],
      [
        0,
        1
      ]
    ],
    "labels": [
      "a",
      "b"
    ]
  },
  "output": {
    "result": {
      "total": 4,
      "rates": [
        [
          0.5,
          0.25
        ],
        [
          0,
          0.25
        ]
      ]
    }
  }
}

Limitations and assumptions

  • The result is an observed joint fraction of this table, without a population-distribution or calibration claim.
  • Label strings are compared exactly. Confusion values may be nonnegative fractional weights; a count interpretation requires count data. Probability-like score rows use [0,1] entries with sum tolerance 10⁻⁸, without establishing calibration.
  • Every declared top-level input is required and unknown fields are rejected. Ordinary strings are limited to 8,192 UTF-16 code units and lists to 128 entries, with tighter operation-specific bounds where stated. JSON text has bounded nesting and node counts.
  • Numeric outputs must be finite and within the absolute safe-integer magnitude; exact larger integers use decimal text. Source positions are zero-based UTF-16 offsets and span ends are exclusive unless a different convention is explicitly stated.

Alternative or Complementary methods

Check label coverage and axis order before comparing tables. Use a separate evaluation design for uncertainty, calibration, operating thresholds and the consequences of real-world decisions.

References

  1. Tool behavior and example: Confusion Joint Rate Table — tool.io

Similar or alternative tools

  • Confusion Column Rate Table

    Normalize each predicted column independently with null for zero-support columns; no calibrated probability claim.

  • Confusion Row Rate Table

    Normalize each actual row independently with null for all cells of zero-support rows; undefined evidence is not converted to zero.