Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| import argparse | |
| from pathlib import Path | |
| import matplotlib.pyplot as plt | |
| import numpy as np | |
| import seaborn as sns | |
| from sklearn.metrics import ConfusionMatrixDisplay, RocCurveDisplay, confusion_matrix, roc_curve | |
| def main() -> None: | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--y-true", required=True, help="NumPy .npy path for ground truth labels") | |
| parser.add_argument("--y-pred", required=True, help="NumPy .npy path for predicted labels") | |
| parser.add_argument("--y-prob", required=True, help="NumPy .npy path for predicted probabilities") | |
| parser.add_argument("--out-dir", required=True) | |
| args = parser.parse_args() | |
| out_dir = Path(args.out_dir) | |
| out_dir.mkdir(parents=True, exist_ok=True) | |
| y_true = np.load(args.y_true) | |
| y_pred = np.load(args.y_pred) | |
| y_prob = np.load(args.y_prob) | |
| cm = confusion_matrix(y_true, y_pred) | |
| fig, ax = plt.subplots(figsize=(5, 5)) | |
| sns.heatmap(cm, annot=True, fmt="d", cmap="Blues", cbar=False, ax=ax) | |
| ax.set_title("Confusion Matrix") | |
| ax.set_xlabel("Predicted") | |
| ax.set_ylabel("True") | |
| fig.tight_layout() | |
| fig.savefig(out_dir / "confusion_matrix.png") | |
| plt.close(fig) | |
| fpr, tpr, _ = roc_curve(y_true, y_prob) | |
| fig, ax = plt.subplots(figsize=(6, 5)) | |
| RocCurveDisplay(fpr=fpr, tpr=tpr).plot(ax=ax) | |
| ax.set_title("ROC Curve") | |
| fig.tight_layout() | |
| fig.savefig(out_dir / "roc_curve.png") | |
| plt.close(fig) | |
| if __name__ == "__main__": | |
| main() | |