import matplotlib matplotlib.use("Agg") import matplotlib.pyplot as plt from sklearn.datasets import load_breast_cancer from sklearn.linear_model import LogisticRegression from sklearn.metrics import RocCurveDisplay from sklearn.model_selection import train_test_split from sklearn.pipeline import make_pipeline from sklearn.preprocessing import StandardScaler cancer = load_breast_cancer() X = cancer.data y = (cancer.target_names[cancer.target] == "malignant").astype(int) X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.25, stratify=y, random_state=42, ) model = make_pipeline( StandardScaler(), LogisticRegression(max_iter=1000), ) model.fit(X_train, y_train) display = RocCurveDisplay.from_estimator( model, X_test, y_test, name="Logistic regression", pos_label=1, plot_chance_level=True, despine=True, ) display.ax_.set_title("ROC curve for malignant cancer class") display.figure_.set_size_inches(7, 5) display.figure_.tight_layout() display.figure_.savefig("roc-curve-plot.png", dpi=160) plt.close(display.figure_) print(f"train rows: {X_train.shape[0]}") print(f"test rows: {X_test.shape[0]}") print("positive class: malignant") print(f"roc auc: {display.roc_auc:.3f}") print(f"curve points: {len(display.fpr)}") print("plot saved: roc-curve-plot.png")