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.