Commit 7660a0e0 authored by Joaquin Torres's avatar Joaquin Torres

Trying to fix issue

parent 47aa5669
......@@ -226,7 +226,7 @@ if __name__ == "__main__":
score = scorer(model, X_test_fold, y_test_fold)
fold_scores[metric_name].append(score)
# --------------------- END SCORINGS ---------------------------
# --------------------- CURVES ---------------------------
# --------------------- CURVES ---------------------------
# Generate ROC curve for the fold
roc_display = RocCurveDisplay.from_estimator(model, X_test_fold, y_test_fold,
name=f"ROC fold {fold_idx}", alpha=0.6, lw=2,
......@@ -235,11 +235,21 @@ if __name__ == "__main__":
interp_tpr[0] = 0.0
tprs.append(interp_tpr)
aucs.append(roc_display.roc_auc)
# Generate Precision-Recall curve for the fold
pr_display = PrecisionRecallDisplay.from_estimator(model, X_test_fold, y_test_fold,
name=f"PR fold {fold_idx}", alpha=0.6, lw=2,
ax=axes[model_idx][1], color=cmap(fold_idx % 10))
interp_precision = np.interp(mean_recall, pr_display.recall[::-1], pr_display.precision[::-1])
# Reverse the recall and precision arrays for interpolation
recall_for_interp = pr_display.recall[::-1]
precision_for_interp = pr_display.precision[::-1]
# Handle the edge case where recall_for_interp has duplicates, which can break np.interp
recall_for_interp, unique_indices = np.unique(recall_for_interp, return_index=True)
precision_for_interp = precision_for_interp[unique_indices]
# Interpolate precision
interp_precision = np.interp(mean_recall, recall_for_interp, precision_for_interp)
precisions.append(interp_precision)
pr_aucs.append(pr_display.average_precision)
# Plot diagonal line for random guessing in ROC curve
......@@ -252,6 +262,7 @@ if __name__ == "__main__":
# Set ROC plot limits and title
axes[model_idx][0].set(xlim=[-0.05, 1.05], ylim=[-0.05, 1.05], title=f"ROC Curve - {model_name} ({group}-{method_names[j]})")
axes[model_idx][0].legend(loc="lower right")
# Compute mean Precision-Recall curve
mean_precision = np.mean(precisions, axis=0)
mean_pr_auc = np.mean(pr_aucs)
......@@ -266,7 +277,7 @@ if __name__ == "__main__":
# Store the fold scores in the dataframe
for metric_name, scores in fold_scores.items():
scores_df.loc[f"{model_name}_{metric_name}"] = np.around(scores, 4)
# Store the DataFrame in the dictionary with a unique key for each sheet
sheet_name = f"{group}_{method_names[j]}"
scores_sheets[sheet_name] = scores_df
# Adjust layout and save figure
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment