import os import logging import numpy as np import matplotlib.pyplot as plt from sklearn.metrics import roc_curve, auc logger = logging.getLogger(__name__) def evaluate_predictions(scores, true_labels, diagnosis, output_dir="results"): """Calculates AUC and generates ROC plot.""" if not os.path.exists(output_dir): os.makedirs(output_dir) fpr, tpr, thresholds = roc_curve(true_labels, scores) roc_auc = auc(fpr, tpr) logger.info(f"Diagnosis: {diagnosis}") logger.info(f"AUC: {roc_auc:.4f}") # Plot ROC curve plt.figure() lw = 2 plt.plot( fpr, tpr, color="darkorange", lw=lw, label="ROC curve (area = %0.2f)" % roc_auc, ) plt.plot([0, 1], [0, 1], color="navy", lw=lw, linestyle="--") plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel("False Positive Rate") plt.ylabel("True Positive Rate") plt.title(f"ROC for {diagnosis}") plt.legend(loc="lower right") plot_path = os.path.join(output_dir, f"roc_{diagnosis}.png") plt.savefig(plot_path) logger.info(f"ROC plot saved to {plot_path}") return roc_auc