Gauß-Prozess-Klassifikation auf dem Iris-Datensatz

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 werden wir untersuchen, wie man Gaussian Process Classification (GPC) auf dem Iris-Datensatz anwendet. Der Iris-Datensatz ist ein berühmter Datensatz, der Informationen über die Länge und Breite der Kelchblätter und Blütenblätter von drei verschiedenen Iris-Art enthält. Wir werden scikit-learn verwenden, um GPC zu implementieren, was ein probabilistischer Ansatz für Klassifizierungstasks ist.

VM-Tipps

Nachdem die VM gestartet 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 Operationen kann aufgrund von 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.

Importieren von erforderlichen Bibliotheken und Datensatz

Zunächst importieren wir die erforderlichen Bibliotheken und laden den Iris-Datensatz aus scikit-learn.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.gaussian_process.kernels import RBF

iris = datasets.load_iris()
X = iris.data[:, :2]  ## wir nehmen nur die ersten beiden Merkmale.
y = np.array(iris.target, dtype=int)

Definition der Kernfunktion

Als nächstes definieren wir die Kernfunktion. In diesem Beispiel verwenden wir die Radial Basis Function (RBF)-Kernfunktion. Wir definieren zwei Versionen der RBF-Kernfunktion: eine isotrope Version und eine anisotrope Version.

kernel = 1.0 * RBF([1.0])
gpc_rbf_isotropic = GaussianProcessClassifier(kernel=kernel).fit(X, y)

kernel = 1.0 * RBF([1.0, 1.0])
gpc_rbf_anisotropic = GaussianProcessClassifier(kernel=kernel).fit(X, y)

Erstellen eines Gitters zum Plotten

Jetzt werden wir ein Gitter zum Plotten erstellen. Das Gitter wird verwendet werden, um die vorhergesagten Wahrscheinlichkeiten für jeden Punkt auf dem Gitter zu plotten. Wir definieren auch die Schrittweite für das Gitter.

h = 0.02  ## Schrittweite im Gitter

x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))

Plotten der vorhergesagten Wahrscheinlichkeiten

Jetzt werden wir die vorhergesagten Wahrscheinlichkeiten für jeden Punkt auf dem Gitter plotten. Wir werden zwei Teilplots erstellen: Einen für die isotrope RBF-Kernfunktion und einen für die anisotrope RBF-Kernfunktion. Wir verwenden die predict_proba-Methode, um die vorhergesagten Wahrscheinlichkeiten für jeden Punkt auf dem Gitter zu erhalten. Anschließend werden wir die vorhergesagten Wahrscheinlichkeiten als Farbplot auf dem Gitter plotten. Wir werden auch die Trainingspunkte für jede Art von Iris-Blume plotten.

titles = ["Isotropic RBF", "Anisotropic RBF"]
plt.figure(figsize=(10, 5))
for i, clf in enumerate((gpc_rbf_isotropic, gpc_rbf_anisotropic)):
    ## Plot the predicted probabilities. For that, we will assign a color to
    ## each point in the mesh [x_min, m_max]x[y_min, y_max].
    plt.subplot(1, 2, i + 1)

    Z = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])

    ## Put the result into a color plot
    Z = Z.reshape((xx.shape[0], xx.shape[1], 3))
    plt.imshow(Z, extent=(x_min, x_max, y_min, y_max), origin="lower")

    ## Plot also the training points
    plt.scatter(X[:, 0], X[:, 1], c=np.array(["r", "g", "b"])[y], edgecolors=(0, 0, 0))
    plt.xlabel("Sepal length")
    plt.ylabel("Sepal width")
    plt.xlim(xx.min(), xx.max())
    plt.ylim(yy.min(), yy.max())
    plt.xticks(())
    plt.yticks(())
    plt.title(
        "%s, LML: %.3f" % (titles[i], clf.log_marginal_likelihood(clf.kernel_.theta))
    )

plt.tight_layout()
plt.show()

Zusammenfassung

In diesem Lab haben wir untersucht, wie man die Gaussian Process Classification (GPC) auf dem Iris-Datensatz mit scikit-learn anwendet. Wir haben zwei Versionen der Radial Basis Function (RBF)-Kernfunktion definiert, eine isotrope Version und eine anisotrope Version. Anschließend haben wir ein Gitter erstellt, um die vorhergesagten Wahrscheinlichkeiten für jeden Punkt auf dem Gitter zu plotten, und die vorhergesagten Wahrscheinlichkeiten als Farbplot auf dem Gitter geplottet. Schließlich haben wir die Trainingspunkte für jede Art von Iris-Blume geplottet.