Buzzy2045
Deploy
541fa1f
Raw
History Blame Contribute Delete
1.11 kB
from __future__ import annotations
import numpy as np
from sklearn.metrics import (
accuracy_score,
classification_report,
precision_recall_fscore_support,
roc_auc_score,
)
from .config import ID2LABEL
def binary_metrics(y_true, y_pred, y_score=None) -> dict:
precision, recall, f1, _ = precision_recall_fscore_support(
y_true,
y_pred,
average="binary",
pos_label=1,
zero_division=0,
)
metrics = {
"accuracy": float(accuracy_score(y_true, y_pred)),
"precision": float(precision),
"recall": float(recall),
"f1": float(f1),
}
if y_score is not None and len(np.unique(y_true)) == 2:
try:
metrics["roc_auc"] = float(roc_auc_score(y_true, y_score))
except ValueError:
metrics["roc_auc"] = float("nan")
return metrics
def report_dict(y_true, y_pred) -> dict:
return classification_report(
y_true,
y_pred,
labels=[0, 1],
target_names=[ID2LABEL[0], ID2LABEL[1]],
zero_division=0,
output_dict=True,
)