jeeveshrg's picture
Deploy MeowContext Lab acoustic-5 demo (v0.1.0)
2199405 verified
Raw
History Blame Contribute Delete
1.27 kB
"""Benchmark result helpers."""
from __future__ import annotations
import numpy as np
import pandas as pd
from meowcontext_lab.data import BENCHMARK_ROWS, EXPECTED_LABELS
def canonical_results() -> pd.DataFrame:
"""Return the canonical benchmark results."""
return pd.DataFrame(BENCHMARK_ROWS)
def balanced_accuracy_from_confusion(confusion: np.ndarray) -> float:
"""Compute balanced accuracy from a square confusion matrix."""
recalls = []
for idx in range(confusion.shape[0]):
total = confusion[idx, :].sum()
recalls.append(0.0 if total == 0 else confusion[idx, idx] / total)
return float(np.mean(recalls))
def approximate_confusion_matrix(score: float, *, samples_per_class: int = 30) -> np.ndarray:
"""Create a deterministic illustrative confusion matrix for a balanced score."""
correct = int(round(score * samples_per_class))
incorrect = samples_per_class - correct
matrix = np.zeros((len(EXPECTED_LABELS), len(EXPECTED_LABELS)), dtype=int)
for idx in range(len(EXPECTED_LABELS)):
matrix[idx, idx] = correct
matrix[idx, (idx + 1) % len(EXPECTED_LABELS)] = incorrect // 2
matrix[idx, (idx + 2) % len(EXPECTED_LABELS)] = incorrect - incorrect // 2
return matrix