def METHOD_NAME(self, preds: pd.DataFrame, truths: np.ndarray, target_enc) -> np.ndarray:
    if self.target_dtype in [dtype.integer, dtype.float, dtype.quantity]:
        if not self.multi_ts_task:
            preds = preds.values.squeeze()
        else:
            preds = pd.Series([p[0] for p in preds.values.squeeze()]).values
        preds = preds.astype(float)
        labels = self.compute_numerical_labels(preds, truths, self.bounds)
    elif self.target_dtype in [dtype.binary, dtype.categorical]:
        if self.base_predictor.supports_proba:
            prob_cols = [col for col in preds.columns if '__mdb_proba' in col]
            col_names = [col.replace('__mdb_proba_', '') for col in prob_cols]
            preds = preds[prob_cols]
        else:
            prob_cols = col_names = target_enc.map.keys()
            ohe_preds = pd.get_dummies(preds['prediction'], columns=col_names)
            for col in col_names:
                if col not in ohe_preds.columns:
                    ohe_preds[col] = np.zeros(ohe_preds.shape[0])
            preds = ohe_preds
        # reorder preds to ensure classes are in same order as in target_enc
        preds.columns = col_names
        new_order = [v for k, v in sorted(target_enc.rev_map.items(), key=lambda x: x[0])]
        preds = preds.reindex(columns=new_order)
        preds = preds.values.squeeze()
        preds = preds if prob_cols else target_enc.encode(preds).tolist()
        truths = target_enc.encode(truths).numpy()
        labels = self.compute_categorical_labels(preds, truths)
    else:
        raise(Exception(f"dtype {self.target_dtype} not supported for confidence normalizer"))
    return labels