Das Plotten von Klassifikationswahrscheinlichkeiten

Machine LearningMachine LearningBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab wird gezeigt, wie man die Klassifikationswahrscheinlichkeit verschiedener Klassifizierer mit Python Scikit-learn darstellt. Wir werden einen 3-Klassen-Datensatz verwenden und ihn mit einem Support-Vector-Klassifizierer, einer L1- und L2-penalisierten logistischen Regression mit einem One-Vs-Rest- oder multinomialen Einstellung und einer Gaussian-Process-Klassifikation klassifizieren.

VM-Tipps

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 von 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.

Importiere erforderliche Bibliotheken

Wir beginnen mit dem Importieren der erforderlichen Bibliotheken für das Lab.

import matplotlib.pyplot as plt
import numpy as np
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.gaussian_process.kernels import RBF
from sklearn import datasets

Lade den Datensatz

Als nächstes laden wir den Iris-Datensatz aus Scikit-learn.

iris = datasets.load_iris()
X = iris.data[:, 0:2]  ## wir nehmen nur die ersten beiden Merkmale für die Visualisierung
y = iris.target
n_features = X.shape[1]

Definiere die Klassifizierer

Wir definieren verschiedene Klassifizierer für den Datensatz.

C = 10
kernel = 1.0 * RBF([1.0, 1.0])  ## für GPC

## Erstelle verschiedene Klassifizierer.
classifiers = {
    "L1 logistische Regression": LogisticRegression(
        C=C, penalty="l1", solver="saga", multi_class="multinomial", max_iter=10000
    ),
    "L2 logistische Regression (Multinomial)": LogisticRegression(
        C=C, penalty="l2", solver="saga", multi_class="multinomial", max_iter=10000
    ),
    "L2 logistische Regression (OvR)": LogisticRegression(
        C=C, penalty="l2", solver="saga", multi_class="ovr", max_iter=10000
    ),
    "Linear SVC": SVC(kernel="linear", C=C, probability=True, random_state=0),
    "GPC": GaussianProcessClassifier(kernel),
}

Visualisiere die Klassifikationswahrscheinlichkeit

Wir visualisieren die Klassifikationswahrscheinlichkeit für jeden Klassifizierer.

n_classifiers = len(classifiers)

plt.figure(figsize=(3 * 2, n_classifiers * 2))
plt.subplots_adjust(bottom=0.2, top=0.95)

xx = np.linspace(3, 9, 100)
yy = np.linspace(1, 5, 100).T
xx, yy = np.meshgrid(xx, yy)
Xfull = np.c_[xx.ravel(), yy.ravel()]

for index, (name, classifier) in enumerate(classifiers.items()):
    classifier.fit(X, y)

    y_pred = classifier.predict(X)
    accuracy = accuracy_score(y, y_pred)
    print("Accuracy (train) for %s: %0.1f%% " % (name, accuracy * 100))

    ## View probabilities:
    probas = classifier.predict_proba(Xfull)
    n_classes = np.unique(y_pred).size
    for k in range(n_classes):
        plt.subplot(n_classifiers, n_classes, index * n_classes + k + 1)
        plt.title("Klasse %d" % k)
        if k == 0:
            plt.ylabel(name)
        imshow_handle = plt.imshow(
            probas[:, k].reshape((100, 100)), extent=(3, 9, 1, 5), origin="lower"
        )
        plt.xticks(())
        plt.yticks(())
        idx = y_pred == k
        if idx.any():
            plt.scatter(X[idx, 0], X[idx, 1], marker="o", c="w", edgecolor="k")

ax = plt.axes([0.15, 0.04, 0.7, 0.05])
plt.title("Wahrscheinlichkeit")
plt.colorbar(imshow_handle, cax=ax, orientation="horizontal")

plt.show()

Zusammenfassung

In diesem Lab wurde gezeigt, wie man die Klassifikationswahrscheinlichkeit für verschiedene Klassifizierer mit Python Scikit-learn darstellt. Wir haben den Iris-Datensatz geladen, verschiedene Klassifizierer definiert und die Klassifikationswahrscheinlichkeit für jeden Klassifizierer visualisiert.