Hinweis
Gehen Sie zum Ende, um den vollständigen Beispielcode herunterzuladen oder dieses Beispiel über JupyterLite oder Binder in Ihrem Browser auszuführen.
Visualisierungen mit Display-Objekten#
In diesem Beispiel konstruieren wir Display-Objekte, ConfusionMatrixDisplay, RocCurveDisplay und PrecisionRecallDisplay direkt aus ihren jeweiligen Metriken. Dies ist eine Alternative zur Verwendung ihrer entsprechenden Plot-Funktionen, wenn die Vorhersagen eines Modells bereits berechnet wurden oder teuer zu berechnen sind. Beachten Sie, dass dies eine fortgeschrittene Verwendung ist, und im Allgemeinen empfehlen wir die Verwendung ihrer jeweiligen Plot-Funktionen.
# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause
Daten laden und Modell trainieren#
Für dieses Beispiel laden wir einen Datensatz eines Bluttransfusions-Service-Centers von OpenML. Dies ist ein binäres Klassifikationsproblem, bei dem das Ziel darin besteht, ob eine Person Blut gespendet hat. Dann werden die Daten in Trainings- und Testdatensätze aufgeteilt und eine logistische Regression mit den Trainingsdaten angepasst.
from sklearn.datasets import fetch_openml
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
X, y = fetch_openml(data_id=1464, return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y)
clf = make_pipeline(StandardScaler(), LogisticRegression(random_state=0))
clf.fit(X_train, y_train)
Erstellen Sie ConfusionMatrixDisplay#
Mit dem angepassten Modell berechnen wir die Vorhersagen des Modells auf dem Testdatensatz. Diese Vorhersagen werden verwendet, um die Konfusionsmatrix zu berechnen, die mit der ConfusionMatrixDisplay geplottet wird.
from sklearn.metrics import ConfusionMatrixDisplay, confusion_matrix
y_pred = clf.predict(X_test)
cm = confusion_matrix(y_test, y_pred)
cm_display = ConfusionMatrixDisplay(cm).plot()

Erstellen Sie RocCurveDisplay#
Die ROC-Kurve erfordert entweder die Wahrscheinlichkeiten oder die nicht-schwellenwertigen Entscheidungswerte des Schätzers. Da die logistische Regression eine Entscheidungsfunktion bereitstellt, werden wir diese verwenden, um die ROC-Kurve zu plotten.
from sklearn.metrics import RocCurveDisplay, roc_curve
y_score = clf.decision_function(X_test)
fpr, tpr, _ = roc_curve(y_test, y_score, pos_label=clf.classes_[1])
roc_display = RocCurveDisplay(fpr=fpr, tpr=tpr).plot()

Erstellen Sie PrecisionRecallDisplay#
Ähnlich kann die Präzisions-Recall-Kurve mit `y_score` aus den Vorhersageabschnitten geplottet werden.
from sklearn.metrics import PrecisionRecallDisplay, precision_recall_curve
prec, recall, _ = precision_recall_curve(y_test, y_score, pos_label=clf.classes_[1])
pr_display = PrecisionRecallDisplay(precision=prec, recall=recall).plot()

Kombinieren Sie die Display-Objekte zu einem einzigen Plot#
Die Display-Objekte speichern die berechneten Werte, die als Argumente übergeben wurden. Dies ermöglicht es, die Visualisierungen einfach mit der Matplotlib API zu kombinieren. Im folgenden Beispiel platzieren wir die Displays nebeneinander in einer Reihe.
import matplotlib.pyplot as plt
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 8))
roc_display.plot(ax=ax1)
pr_display.plot(ax=ax2)
plt.show()

Gesamtlaufzeit des Skripts: (0 Minuten 0,262 Sekunden)
Verwandte Beispiele
Multiklassen-Receiver Operating Characteristic (ROC)
Post-Hoc-Anpassung des Entscheidungsschwellenwerts für kostenempfindliches Lernen