Einführung
Die Konfusionsmatrix ist ein Werkzeug zur 计算 der Leistung eines Klassifizierungsalgorithmus. Es ist eine Tabelle, die die Leistung eines Klassifizierungsmodells durch Vergleich der vorhergesagten Klassenbezeichnungen mit den tatsächlichen Klassenbezeichnungen zusammenfasst. In diesem Tutorial wird gezeigt, wie die scikit-learn-Bibliothek verwendet wird, um eine Konfusionsmatrix zu generieren und deren Ergebnisse zu visualisieren.
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 öffnen.
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 bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.
Bibliotheken importieren
Zunächst müssen wir die erforderlichen Bibliotheken importieren. Wir werden scikit-learn, matplotlib, numpy und datasets verwenden.
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import ConfusionMatrixDisplay
Daten laden
Wir werden den Iris-Datensatz aus scikit-learn verwenden. Der Datensatz enthält 150 Proben, jede mit vier Merkmalen und einem Ziel-Label.
iris = datasets.load_iris()
X = iris.data
y = iris.target
class_names = iris.target_names
Daten aufteilen
Wir werden den Datensatz in einen Trainingssatz und einen Testsatz aufteilen. Der Trainingssatz wird verwendet, um das Modell zu trainieren, und der Testsatz wird verwendet, um die Leistung des Modells zu evaluieren.
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
Modell trainieren
Wir werden einen Support-Vector-Machine (SVM)-Classifier mit einem linearen Kernel trainieren. Wir werden einen Regularisierungsparameter C verwenden, der zu niedrig ist, um die Auswirkungen auf die Ergebnisse zu sehen.
classifier = svm.SVC(kernel="linear", C=0.01).fit(X_train, y_train)
Konfusionsmatrix generieren
Wir werden eine Konfusionsmatrix mit der Klasse ConfusionMatrixDisplay aus scikit-learn generieren. Die Konfusionsmatrix wird die Anzahl der korrekten und falschen Vorhersagen für jede Klasse anzeigen.
np.set_printoptions(precision=2)
disp = ConfusionMatrixDisplay.from_estimator(
classifier,
X_test,
y_test,
display_labels=class_names,
cmap=plt.cm.Blues,
normalize=None,
)
Visualisierung der Konfusionsmatrix
Wir werden die Konfusionsmatrix mit matplotlib visualisieren. Wir werden sowohl eine nicht normalisierte als auch eine normalisierte Konfusionsmatrix plotten.
titles_options = [
("Confusion matrix, without normalization", None),
("Normalized confusion matrix", "true"),
]
for title, normalize in titles_options:
disp = ConfusionMatrixDisplay.from_estimator(
classifier,
X_test,
y_test,
display_labels=class_names,
cmap=plt.cm.Blues,
normalize=normalize,
)
disp.ax_.set_title(title)
print(title)
print(disp.confusion_matrix)
plt.show()
Zusammenfassung
In diesem Tutorial haben wir gelernt, wie man die scikit-learn-Bibliothek verwendet, um eine Konfusionsmatrix zu generieren und deren Ergebnisse zu visualisieren. Wir haben den Iris-Datensatz geladen, ihn in Trainings- und Testsätze unterteilt, einen Support-Vector-Machine-Classifier trainiert und eine Konfusionsmatrix generiert und visualisiert. Die Konfusionsmatrix hat die Anzahl der korrekten und falschen Vorhersagen für jede Klasse gezeigt, und die Visualisierung hat uns geholfen, die Ergebnisse zu interpretieren.