Hauptkomponentenanalyse auf dem Iris-Datensatz

Beginner

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

Einführung

In diesem Lab werden wir die Hauptkomponentenanalyse (PCA) auf dem Iris-Datensatz mit Python scikit-learn durchführen. PCA ist eine Technik, die verwendet wird, um die Dimensionalität eines Datensatzes zu reduzieren, während möglichst viel Varianz beibehalten wird. Einfach ausgedrückt, hilft es, die wichtigsten Merkmale in einem Datensatz zu identifizieren und die weniger wichtigen zu entfernen. Der Iris-Datensatz ist ein berühmter Datensatz auf dem Gebiet des maschinellen Lernens und enthält Informationen über die physischen Attribute von drei verschiedenen Arten von Iris-Blüten.

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

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 Import der erforderlichen Bibliotheken - numpy, matplotlib.pyplot, die decomposition- und datasets-Module von scikit-learn.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import decomposition
from sklearn import datasets

Lade den Datensatz

Als nächstes laden wir den Iris-Datensatz mit der Funktion load_iris() von scikit-learn. Anschließend trennen wir die Merkmalsvariablen (X) und die Zielvariablen (y) voneinander.

iris = datasets.load_iris()
X = iris.data
y = iris.target

Visualisiere den Datensatz

Bevor wir die PCA durchführen, lassen wir uns zunächst den Datensatz in 3D mit matplotlib visualisieren. Dies wird uns einen Überblick darüber geben, wie die verschiedenen Arten von Iris-Blüten im Datensatz verteilt sind.

fig = plt.figure(1, figsize=(4, 3))
plt.clf()
ax = fig.add_subplot(111, projection="3d", elev=48, azim=134)
ax.set_position([0, 0, 0.95, 1])
plt.cla()
for name, label in [("Setosa", 0), ("Versicolour", 1), ("Virginica", 2)]:
    ax.text3D(
        X[y == label, 0].mean(),
        X[y == label, 1].mean() + 1.5,
        X[y == label, 2].mean(),
        name,
        horizontalalignment="center",
        bbox=dict(alpha=0.5, edgecolor="w", facecolor="w"),
    )
y = np.choose(y, [1, 2, 0]).astype(float)
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=y, cmap=plt.cm.nipy_spectral, edgecolor="k")
ax.xaxis.set_ticklabels([])
ax.yaxis.set_ticklabels([])
ax.zaxis.set_ticklabels([])
plt.show()

Führe die Hauptkomponentenanalyse (PCA) durch

Jetzt, nachdem wir den Datensatz visualisiert haben, führen wir die PCA auf ihm durch. Dazu verwenden wir die Funktion PCA() von scikit-learn. Wir setzen die Anzahl der Komponenten auf 3, da wir den Datensatz von 4 Dimensionen (4 Merkmale) auf 3 Dimensionen reduzieren möchten.

pca = decomposition.PCA(n_components=3)
pca.fit(X)
X = pca.transform(X)

Visualisiere den reduzierten Datensatz

Schließlich visualisieren wir den reduzierten Datensatz in 3D mit matplotlib. Wir verwenden denselben Code wie in Schritt 3, aber diesmal plotten wir den reduzierten Datensatz (X) anstelle des ursprünglichen Datensatzes.

fig = plt.figure(1, figsize=(4, 3))
plt.clf()
ax = fig.add_subplot(111, projection="3d", elev=48, azim=134)
ax.set_position([0, 0, 0.95, 1])
plt.cla()
for name, label in [("Setosa", 0), ("Versicolour", 1), ("Virginica", 2)]:
    ax.text3D(
        X[y == label, 0].mean(),
        X[y == label, 1].mean() + 1.5,
        X[y == label, 2].mean(),
        name,
        horizontalalignment="center",
        bbox=dict(alpha=0.5, edgecolor="w", facecolor="w"),
    )
y = np.choose(y, [1, 2, 0]).astype(float)
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=y, cmap=plt.cm.nipy_spectral, edgecolor="k")
ax.xaxis.set_ticklabels([])
ax.yaxis.set_ticklabels([])
ax.zaxis.set_ticklabels([])
plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man die Hauptkomponentenanalyse (PCA) auf dem Iris-Datensatz mit Python und scikit-learn durchführt. Wir haben den Datensatz geladen, ihn in 3D visualisiert, die PCA darauf durchgeführt, um seine Dimensionen zu reduzieren, und schließlich den reduzierten Datensatz erneut in 3D visualisiert. Die PCA ist eine leistungsstarke Technik, die in vielen Anwendungen verwendet werden kann, um die Dimensionen eines Datensatzes zu reduzieren und die wichtigsten Merkmale zu identifizieren.