From 5ac03da28e7419ed5cc42f2dd9191e61f920923a Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 28 Apr 2026 15:31:55 +0000 Subject: [PATCH 1/2] fix: handle "auroc" alias in score_classification preprocessing The two preprocessing branches only checked for "roc", causing y_pred to be incorrectly argmax'd when callers (e.g. tuned_tabpfn.py) pass "auroc". The final dispatch already accepted both names, so probability scores are now consistently preserved for either alias. https://claude.ai/code/session_01MY9seKHxi9ontDi1o35vSd --- src/tabpfn_extensions/scoring/scoring_utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/tabpfn_extensions/scoring/scoring_utils.py b/src/tabpfn_extensions/scoring/scoring_utils.py index 57ed5156..a77d99eb 100644 --- a/src/tabpfn_extensions/scoring/scoring_utils.py +++ b/src/tabpfn_extensions/scoring/scoring_utils.py @@ -130,10 +130,12 @@ def score_classification( if optimize_metric is None: optimize_metric = "roc" - if (optimize_metric == "roc") and len(np.unique(y_true)) == 2: + if (optimize_metric in ("roc", "auroc")) and len(np.unique(y_true)) == 2: y_pred = y_pred[:, 1] - if (not y_pred_is_labels) and (optimize_metric not in ["roc", "log_loss"]): + if (not y_pred_is_labels) and ( + optimize_metric not in ["roc", "auroc", "log_loss"] + ): y_pred = np.argmax(y_pred, axis=1) if optimize_metric in ("roc", "auroc"): From 01fea6d11d1cc44439a50313c2c531a12fe52f09 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 28 Apr 2026 15:35:13 +0000 Subject: [PATCH 2/2] style: apply ruff format to scoring_utils https://claude.ai/code/session_01MY9seKHxi9ontDi1o35vSd --- src/tabpfn_extensions/scoring/scoring_utils.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/tabpfn_extensions/scoring/scoring_utils.py b/src/tabpfn_extensions/scoring/scoring_utils.py index a77d99eb..3d6f52e4 100644 --- a/src/tabpfn_extensions/scoring/scoring_utils.py +++ b/src/tabpfn_extensions/scoring/scoring_utils.py @@ -133,9 +133,7 @@ def score_classification( if (optimize_metric in ("roc", "auroc")) and len(np.unique(y_true)) == 2: y_pred = y_pred[:, 1] - if (not y_pred_is_labels) and ( - optimize_metric not in ["roc", "auroc", "log_loss"] - ): + if (not y_pred_is_labels) and (optimize_metric not in ["roc", "auroc", "log_loss"]): y_pred = np.argmax(y_pred, axis=1) if optimize_metric in ("roc", "auroc"):