Dimensionalitätsreduzierung mit Neighborhood Components Analysis

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 die Neighborhood Components Analysis (NCA) zur Dimensionsreduzierung mithilfe der scikit-learn-Bibliothek angewendet wird. Dieses Lab vergleicht die NCA mit anderen (linearen) Dimensionsreduktionsmethoden, die auf dem Digits-Datensatz angewendet werden. Der Digits-Datensatz enthält Bilder von Ziffern von 0 bis 9 mit ungefähr 180 Proben pro Klasse.

Tipps für die VM

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49224{{"Dimensionalitätsreduzierung mit Neighborhood Components Analysis"}} end

Bibliotheken importieren

Importieren Sie die erforderlichen Bibliotheken:

  • numpy
  • matplotlib.pyplot
  • datasets
  • train_test_split
  • PCA
  • LinearDiscriminantAnalysis
  • KNeighborsClassifier
  • NeighborhoodComponentsAnalysis
  • make_pipeline
  • StandardScaler

Lade den Digits-Datensatz

Laden Sie den Digits-Datensatz mit der Funktion load_digits() aus scikit-learn.

Teile den Datensatz auf

Teilen Sie den Datensatz in Trainings- und Testdatensätze auf, indem Sie die Funktion train_test_split() aus scikit-learn verwenden.

Definiere Variablen

Definieren Sie die Variablen, die für die Analyse erforderlich sind:

  • dim = Anzahl der Merkmale im Datensatz
  • n_classes = Anzahl der Klassen im Datensatz
  • n_neighbors = Anzahl der Nachbarn für den KNN-Klassifizierer
  • random_state = Zufallszustand für die Reproduzierbarkeit

Dimensionalitätsreduzierung mit PCA

Reduzieren Sie die Dimension des Datensatzes auf 2 mit Hilfe der Principal Component Analysis (PCA), indem Sie einen Pipeline erstellen mit StandardScaler() und PCA(n_components=2, random_state=random_state).

Dimensionalitätsreduzierung mit Linearer Diskriminanzanalyse

Reduzieren Sie die Dimension des Datensatzes auf 2 mit Hilfe der Linearen Diskriminanzanalyse (LDA), indem Sie einen Pipeline erstellen mit StandardScaler() und LinearDiscriminantAnalysis(n_components=2).

Dimensionalitätsreduzierung mit Neighborhood Components Analysis

Reduzieren Sie die Dimension des Datensatzes auf 2 mit Hilfe der Neighborhood Components Analysis (NCA), indem Sie einen Pipeline erstellen mit StandardScaler() und NeighborhoodComponentsAnalysis(n_components=2, random_state=random_state).

Verwenden Sie den KNN-Klassifizierer, um Methoden zu bewerten

Erstellen Sie einen KNeighborsClassifier mit n_neighbors als Parameter.

Erstellen Sie eine Liste von Methoden, die verglichen werden sollen

Erstellen Sie eine Liste von Methoden, die mit dem KNN-Klassifizierer verglichen werden sollen, indem Sie die in Schritten 5-7 definierten Methoden verwenden.

Modellieren und Evaluieren der Testgenauigkeit

Modellieren Sie jedes Modell und evaluieren Sie die Testgenauigkeit, indem Sie den Trainingsdatensatz und den Testdatensatz mit model.transform() transformieren und den KNN-Klassifizierer auf dem transformierten Trainingsdatensatz trainieren. Berechnen Sie die Genauigkeit der nächsten Nachbarn auf dem transformierten Testdatensatz mit knn.score().

Zeichnen Sie die projizierten Punkte und zeigen Sie die Bewertungs-Score

Zeichnen Sie die projizierten Punkte und zeigen Sie den Bewertungs-Score für jede Methode mit plt.scatter() und plt.title().

Zeigen Sie die Diagramme an

Zeigen Sie die Diagramme mit plt.show() an.

Zusammenfassung

In diesem Lab wurde gezeigt, wie die Dimensionalitätsreduzierung mit Neighborhood Components Analysis (NCA) durchgeführt werden kann, und es wurde mit anderen (linearen) Dimensionalitätsreduzierungsverfahren verglichen, die auf dem Digits-Datensatz angewandt wurden. Die Ergebnisse zeigten, dass NCA eine clustering der Daten erzwingt, die visuell sinnvoll ist, trotz der großen Reduzierung der Dimension.