Skip to main content

Multi-Class Classification Overview

A classification model with more than two classes.

Supported Metrics

Micro-Averaged Precision, Micro-Averaged Recall, Macro-Averaged Precision, Macro-Averaged Recall, Precision for a Class, Recall for a Class

How To Log Multi-Class Data

Log multi-class classification models based on your use case
Use CaseDescriptionExpected Fields
Single-LabelA prediction that has 1 label i.e. A passenger can only be in EITHER economy, business, OR first-class- prediction scores (dictionary)

- actual scores (dictionary, optional)
Multi-LabelA prediction that has multiple labels i.e. A song can be multiple genres such as ‘pop-rock’- prediction scores (dictionary)

- threshold scores (dictionary)

- actual scores (dictionary, optional)

Single-Label Use Case

Single-Label Use Case Colab

Example Row
prediction_scoresactual_scores
[{"class_name": "economy_class", "score": 0.81},{"class_name": "business_class", "score": 0.42},{"class_name": "first_class", "score": 0.35}][{"class_name": "economy_class", "score": 1}]
Note: class economy_class has the highest prediction score and will be the prediction label
Code Example
schema = Schema(
    prediction_id_column_name="prediction_id",
    prediction_score_column_name="prediction_scores",
    actual_score_column_name="actual_scores",
)

response = arize_client.log(
    model_id='multiclass-classification-single-label-example', 
    model_version= "v1",
    model_type=ModelTypes.MULTI_CLASS,
    dataframe=example_dataframe,
    schema=schema,
    environment=Environments.PRODUCTION,
)

Multi-Label Use Case

Multi-Label Use Case Colab

Example Row
prediction_scoresthreshold_scoresactual_scores
[{"class_name": "jazz", "score": 0.81},{"class_name": "rock", "score": 0.42},{"class_name": "pop", "score": 0.35}][{"class_name": "jazz", "score": 0.5},{"class_name": "rock", "score": 0.4},{"class_name": "pop", "score": 0.6}][{"class_name": "rock", "score": 1}]
Note: classes jazz and rock have prediction scores > threshold scores and will be part of the prediction label.
Code Example
schema = Schema(
    prediction_id_column_name="prediction_id",
    prediction_score_column_name="prediction_scores",
    multi_class_threshold_scores_column_name="threshold_scores",
    actual_score_column_name="actual_scores",
)

response = arize_client.log(
    model_id='multiclass-classification-multi-label-example', 
    model_version= "v1",
    model_type=ModelTypes.MULTI_CLASS,
    dataframe=example_dataframe,
    schema=schema,
    environment=Environments.PRODUCTION,
)

Inferring Labels From Uploaded Scores

To calculate metrics and visualize & troubleshoot data for multi-class models, Arize automatically infers prediction & actual labels from the scores that you upload. Learn how each case is determined below.
Use CasePrediction Label DeterminationActual Label Determination
Single-LabelFor each prediction, the class with the highest prediction score is the prediction labelThe class with an actual score of 1 is the actual label
Multi-LabelFor each class, there must exist a prediction score and threshold score. If the prediction score > threshold score, the class is a part of the prediction labelEach class with an actual score of 1 is part of the actual label