Visualisierungen mit Anzeigeobjekten erstellen

Beginner

This tutorial is from open-source community. Access the source code

Einführung

In diesem Lab werden wir lernen, wie wir mit Hilfe von scikit-learn Visualisierungen mit Anzeigeobjekten erstellen. Anzeigeobjekte sind Klassen, die es uns ermöglichen, Visualisierungen direkt aus ihren jeweiligen Metriken zu erstellen. In diesem Lab werden wir die Anzeigeobjekte ConfusionMatrixDisplay, RocCurveDisplay und PrecisionRecallDisplay verwenden, um Visualisierungen für ein binäres Klassifizierungsproblem zu erstellen.

Tipps für die VM

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie während des Lernens Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Daten laden und Modell trainieren

Für dieses Beispiel verwenden wir einen Datensatz von einem Bluttransfusionsdienstzentrum aus OpenML. Das Ziel ist, zu bestimmen, ob eine Person Blut gespendet hat. Zunächst wird der Datensatz in Trainings- und Testdaten aufgeteilt, und anschließend wird ein logistisches Regressionsmodell mit dem Trainingsdatensatz trainiert.

from sklearn.datasets import fetch_openml
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

X, y = fetch_openml(data_id=1464, return_X_y=True, parser="pandas")
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)

ConfusionMatrixDisplay erstellen

Mit dem trainierten Modell berechnen wir die Vorhersagen des Modells auf dem Testdatensatz. Diese Vorhersagen werden verwendet, um die Konfusionsmatrix zu berechnen, die mit ConfusionMatrixDisplay geplottet wird.

from sklearn.metrics import confusion_matrix
from sklearn.metrics import ConfusionMatrixDisplay

y_pred = clf.predict(X_test)
cm = confusion_matrix(y_test, y_pred)

cm_display = ConfusionMatrixDisplay(cm).plot()

RocCurveDisplay erstellen

Für die ROC-Kurve werden entweder die Wahrscheinlichkeiten oder die nicht schwellenwertbasierten Entscheidungswerte des Schätzers benötigt. Da die logistische Regression eine Entscheidungsfunktion liefert, werden wir sie verwenden, um die ROC-Kurve zu zeichnen.

from sklearn.metrics import roc_curve
from sklearn.metrics import RocCurveDisplay

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()

PrecisionRecallDisplay erstellen

Ähnlich kann die Genauigkeit-Erfassungsrate-Kurve mit y_score aus dem vorherigen Abschnitt geplottet werden.

from sklearn.metrics import precision_recall_curve
from sklearn.metrics import PrecisionRecallDisplay

prec, recall, _ = precision_recall_curve(y_test, y_score, pos_label=clf.classes_[1])
pr_display = PrecisionRecallDisplay(precision=prec, recall=recall).plot()

Anzeigeobjekte in einem einzigen Plot kombinieren

Die Anzeigeobjekte speichern die berechneten Werte, die als Argumente übergeben wurden. Dies ermöglicht es, die Visualisierungen mit der API von Matplotlib leicht zu kombinieren. Im folgenden Beispiel platzieren wir die Anzeigen nebeneinander in einer Zeile.

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()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man mit scikit-learn Visualisierungen mit Anzeigeobjekten erstellt. Wir haben die Anzeigeobjekte ConfusionMatrixDisplay, RocCurveDisplay und PrecisionRecallDisplay verwendet, um Visualisierungen für ein binäres Klassifizierungsproblem zu erstellen. Zunächst haben wir die Daten geladen und ein logistisches Regressionsmodell trainiert. Anschließend haben wir die Konfusionsmatrix, die ROC-Kurve und die Genauigkeit-Erfassungsrate-Kurve mit Anzeigeobjekten erstellt. Schließlich haben wir die Anzeigeobjekte mit der API von Matplotlib zu einem einzigen Plot kombiniert.