Vergleiche PCA und LDA

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 die Leistung zweier populärer Dimensionalitätsreduktionsalgorithmen, Principal Component Analysis (PCA) und Linear Discriminant Analysis (LDA), auf dem Iris-Datensatz vergleichen. Der Iris-Datensatz enthält 3 Arten von Iris-Blumen mit 4 Attributen: Kelchblumendurchmesser, Kelchblattbreite, Blütenblattlänge und Blütenblattbreite.

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 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 ab, und wir werden das Problem für Sie prompt beheben.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup(["Advanced Data Analysis and Dimensionality Reduction"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/discriminant_analysis("Discriminant Analysis") sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup -.-> sklearn/decomposition("Matrix Decomposition") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/discriminant_analysis -.-> lab-49242{{"Vergleiche PCA und LDA"}} sklearn/decomposition -.-> lab-49242{{"Vergleiche PCA und LDA"}} ml/sklearn -.-> lab-49242{{"Vergleiche PCA und LDA"}} end

Lade den Datensatz

Zunächst müssen wir den Iris-Datensatz mit der integrierten Funktion load_iris() von scikit-learn laden.

import matplotlib.pyplot as plt
from sklearn import datasets

iris = datasets.load_iris()

X = iris.data
y = iris.target
target_names = iris.target_names

Führe PCA durch

Als nächstes werden wir die Principal Component Analysis (PCA) auf dem Datensatz durchführen, um die Kombination von Attributen zu identifizieren, die die meiste Varianz im Datensatz erklären. Wir werden die verschiedenen Samples auf den ersten beiden Hauptkomponenten darstellen.

from sklearn.decomposition import PCA

pca = PCA(n_components=2)
X_r = pca.fit(X).transform(X)

## Prozentsatz der erklärten Varianz für jede Komponente
print("Explained variance ratio (first two components): %s" % str(pca.explained_variance_ratio_))

plt.figure()
colors = ["navy", "turquoise", "darkorange"]
lw = 2

for color, i, target_name in zip(colors, [0, 1, 2], target_names):
    plt.scatter(X_r[y == i, 0], X_r[y == i, 1], color=color, alpha=0.8, lw=lw, label=target_name)

plt.legend(loc="best", shadow=False, scatterpoints=1)
plt.title("PCA of Iris Dataset")
plt.show()

Führe LDA durch

Jetzt werden wir die Lineare Diskriminanzanalyse (LDA) auf dem Datensatz durchführen, um Attribute zu identifizieren, die die meiste Varianz zwischen den Klassen erklären. Anders als die PCA ist die LDA eine überwachte Methode, die bekannte Klassenlabels verwendet.

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

lda = LinearDiscriminantAnalysis(n_components=2)
X_r2 = lda.fit(X, y).transform(X)

plt.figure()
for color, i, target_name in zip(colors, [0, 1, 2], target_names):
    plt.scatter(X_r2[y == i, 0], X_r2[y == i, 1], alpha=0.8, color=color, label=target_name)

plt.legend(loc="best", shadow=False, scatterpoints=1)
plt.title("LDA of Iris Dataset")
plt.show()

Vergleiche die Ergebnisse

Schließlich werden wir die Ergebnisse der PCA und LDA vergleichen. Wir können sehen, dass die LDA bei der Trennung der drei Klassen im Iris-Datensatz besser als die PCA performt.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man die Principal Component Analysis (PCA) und die Lineare Diskriminanzanalyse (LDA) auf dem Iris-Datensatz mit scikit-learn durchführt. Wir haben auch die Leistung dieser beiden Dimensionalitätsreduktionsalgorithmen verglichen und festgestellt, dass die LDA bei der Trennung der verschiedenen Klassen im Datensatz besser als die PCA performt.