6 Dimensionalitätsreduktionsalgorithmen mit Python

Tweet Teilen Teilen

Zuletzt aktualisiert am August 17, 2020

Dimensionalitätsreduktion ist eine unbeaufsichtigte Lerntechnik.

Nichtsdestotrotz kann es als Datentransformationsvorverarbeitungsschritt für maschinelle Lernalgorithmen auf Klassifikations- und Regressionsvorhersagemodellierungsdatensätzen mit überwachten Lernalgorithmen verwendet werden.

Es gibt viele Dimensionalitätsreduktionsalgorithmen zur Auswahl und keinen einzigen besten Algorithmus für alle Fälle. Stattdessen ist es eine gute Idee, eine Reihe von Dimensionalitätsreduktionsalgorithmen und unterschiedliche Konfigurationen für jeden Algorithmus zu untersuchen.

In diesem Tutorial erfahren Sie, wie Sie Top-Dimensionalitätsreduktionsalgorithmen in Python anpassen und bewerten.

Nach Abschluss dieses Tutorials werden Sie wissen:

  • Dimensionalitätsreduktion sucht eine niederdimensionale Darstellung numerischer Eingabedaten, die die hervorstechenden Beziehungen in den Daten beibehält.
  • Es gibt viele verschiedene Dimensionalitätsreduktionsalgorithmen und keine einzige beste Methode für alle Datensätze.
  • Implementierung, Anpassung und Bewertung der Top-Dimensionalitätsreduktion in Python mit der scikit-learn Machine Learning Library.

Starten Sie Ihr Projekt mit meinem neuen Buch Data Preparation for Machine Learning, einschließlich Schritt-für-Schritt-Anleitungen und den Python-Quellcodedateien für alle Beispiele.

Los geht’s.

Dimensionalitätsreduktionsalgorithmen mit Python

Dimensionalitätsreduktionsalgorithmen mit Python
Foto von Bernard Spragg. NZ, einige Rechte vorbehalten.

Tutorial Übersicht

Dieses Tutorial ist in drei Teile gegliedert; sie sind:

  1. Reduzierung der Dimensionalität
  2. Algorithmen zur Reduzierung der Dimensionalität
  3. Beispiele für die Reduzierung der Dimensionalität
    1. Installation der Scikit-Learn-Bibliothek
    2. Klassifizierungsdatensatz
    3. Hauptkomponentenanalyse
    4. Singularwertzerlegung
    5. Lineare Diskriminanzanalyse
    6. Isomap-Einbettung
    7. Lokal lineare Einbettung
    8. Modifizierte lokal lineare Einbettung

Dimensionsreduktion

Die Dimensionsreduktion bezieht sich auf Techniken zur Reduzierung der Anzahl von Eingangsvariablen in Trainingsdaten.

Wenn es um hochdimensionale Daten geht, ist es oft nützlich, die Dimensionalität zu reduzieren, indem die Daten in einen niedrigdimensionalen Unterraum projiziert werden, der die „Essenz“ der Daten erfasst. Dies nennt man Dimensionsreduktion.

— Seite 11, Maschinelles Lernen: Eine probabilistische Perspektive, 2012.

Hochdimensionalität kann Hunderte, Tausende oder sogar Millionen von Eingabevariablen bedeuten.

Weniger Eingabedimensionen bedeuten oft entsprechend weniger Parameter oder eine einfachere Struktur im maschinellen Lernmodell, sogenannte Freiheitsgrade. Ein Modell mit zu vielen Freiheitsgraden passt wahrscheinlich zum Trainingsdatensatz und funktioniert möglicherweise nicht gut mit neuen Daten.

Es ist wünschenswert, einfache Modelle zu haben, die gut verallgemeinern, und wiederum Eingabedaten mit wenigen Eingabevariablen. Dies gilt insbesondere für lineare Modelle, bei denen die Anzahl der Eingaben und die Freiheitsgrade des Modells häufig eng miteinander verbunden sind.

Dimensionalitätsreduktion ist eine Datenvorbereitungstechnik, die vor der Modellierung an Daten durchgeführt wird. Es kann nach der Datenbereinigung und Datenskalierung und vor dem Training eines Vorhersagemodells durchgeführt werden.

… Die Reduzierung der Dimensionalität ergibt eine kompaktere, leichter interpretierbare Darstellung des Zielkonzepts, die die Aufmerksamkeit des Benutzers auf die relevantesten Variablen lenkt.

— Seite 289, Data Mining: Praktische Tools und Techniken für maschinelles Lernen, 4. Auflage, 2016.Daher muss jede Dimensionsreduktion, die an Trainingsdaten durchgeführt wird, auch an neuen Daten durchgeführt werden, z. B. einem Testdatensatz, einem Validierungsdatensatz und Daten, wenn eine Vorhersage mit dem endgültigen Modell getroffen wird.

Möchten Sie mit der Datenaufbereitung beginnen?

Nehmen Sie jetzt an meinem kostenlosen 7-tägigen E-Mail-Crashkurs teil (mit Beispielcode).

Klicken Sie hier, um sich anzumelden und eine kostenlose PDF-Ebook-Version des Kurses zu erhalten.

Laden Sie Ihren KOSTENLOSEN Minikurs herunter

Algorithmen zur Reduzierung der Dimensionalität

Es gibt viele Algorithmen, die zur Reduzierung der Dimensionalität verwendet werden können.

Zwei Hauptklassen von Methoden sind die aus der linearen Algebra und die aus dem vielfältigen Lernen.

Lineare Algebra Methoden

Matrixfaktorisierungsmethoden aus dem Bereich der linearen Algebra können für die Dimensionalität verwendet werden.

Weitere Informationen zur Matrixfaktorisierung finden Sie im Tutorial:

  • Eine sanfte Einführung in die Matrixfaktorisierung für maschinelles Lernen

Einige der beliebtesten Methoden sind:

  • Hauptkomponentenanalyse
  • Singularwertzerlegung
  • Nicht-negative Matrixfaktorisierung

Vielfältige Lernmethoden

Vielfältige Lernmethoden suchen eine niedrigdimensionale Projektion hochdimensionaler Eingaben, die die hervorstechenden Eigenschaften der Eingabedaten erfasst.

Einige der beliebtesten Methoden sind:

  • Isomap-Einbettung
  • Lokal lineare Einbettung
  • Multidimensionale Skalierung
  • Spektrale Einbettung
  • t-verteilte stochastische Nachbareinbettung

Jeder Algorithmus bietet einen anderen Ansatz für die Herausforderung, natürliche Beziehungen in Daten mit niedrigeren Dimensionen zu entdecken.

Es gibt keinen Algorithmus zur Reduzierung der besten Dimensionalität und keine einfache Möglichkeit, den besten Algorithmus für Ihre Daten zu finden, ohne kontrollierte Experimente zu verwenden.

In diesem Tutorial erfahren Sie, wie Sie jede Teilmenge dieser beliebten Dimensionalitätsreduktionsalgorithmen aus der scikit-learn-Bibliothek verwenden.

Die Beispiele bieten Ihnen die Grundlage, um die Beispiele zu kopieren und einzufügen und die Methoden an Ihren eigenen Daten zu testen.

Wir werden nicht in die Theorie hinter der Funktionsweise der Algorithmen eintauchen oder sie direkt vergleichen. Einen guten Ausgangspunkt zu diesem Thema finden Sie unter:

  • Signale in Komponenten zerlegen, scikit-learn API.
  • Vielfältiges Lernen, scikit-learn API.

Lassen Sie uns eintauchen.

Beispiele für Dimensionalitätsreduktion

In diesem Abschnitt werden wir die Verwendung gängiger Dimensionalitätsreduktionsalgorithmen in scikit-learn überprüfen.

Dies beinhaltet ein Beispiel für die Verwendung der Dimensionalitätsreduktionstechnik als Datentransformation in einer Modellierungspipeline und die Auswertung einer Modellanpassung an die Daten.

Die Beispiele sind so konzipiert, dass Sie sie in Ihr eigenes Projekt kopieren und einfügen und die Methoden auf Ihre eigenen Daten anwenden können. In der scikit-learn-Bibliothek sind einige Algorithmen verfügbar, die nicht demonstriert werden, da sie aufgrund der Art des Algorithmus nicht direkt als Datentransformation verwendet werden können.

Daher werden wir in jedem Beispiel einen synthetischen Klassifizierungsdatensatz verwenden.

Scikit-Learn Library Installation

Zuerst installieren wir die Bibliothek.

Überspringen Sie diesen Schritt nicht, da Sie sicherstellen müssen, dass Sie die neueste Version installiert haben.

Sie können die scikit-learn-Bibliothek mit dem pip Python-Installationsprogramm wie folgt installieren:

1
sudo pip install scikit-learn

For additional installation instructions specific to your platform, see:

  • Installing scikit-learn

Next, let’s confirm that the library is installed and you are using a modern version.

Run the following script to print the library version number.

1
2
3

# check scikit-learn version
import sklearn
print(sklearn.__version__)

Running the example, you should see the following version number or higher.

1
0.23.0

Klassifizierungsdatensatz

Wir werden die Funktion make_classification() verwenden, um einen binären Testklassifizierungsdatensatz zu erstellen.

Der Datensatz enthält 1.000 Beispiele mit 20 Eingabemerkmalen, von denen 10 informativ und 10 redundant sind. Dies bietet für jede Technik die Möglichkeit, redundante Eingabemerkmale zu identifizieren und zu entfernen.

Der feste zufällige Startwert für den Pseudozufallszahlengenerator stellt sicher, dass wir bei jeder Ausführung des Codes denselben synthetischen Datensatz generieren.

An example of creating and summarizing the synthetic classification dataset is listed below.

1
2
3
4
5
6

# synthetic classification dataset
from sklearn.datensätze importieren make_classification
# Datensatz definieren
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# Datensatz zusammenfassen
drucken(X.shape, y.shape)

Wenn Sie das Beispiel ausführen, wird der Datensatz erstellt und die Anzahl der Zeilen und Spalten gemeldet, die unseren Erwartungen entsprechen.

1
(1000, 20) (1000,)

It is a binary classification task and we will evaluate a LogisticRegression model after each dimensionality reduction transform.

Das Modell wird anhand des Goldstandards der wiederholten geschichteten 10-fachen Kreuzvalidierung bewertet. Der Mittelwert und die Standardabweichung Klassifizierungsgenauigkeit über alle Falten und Wiederholungen wird gemeldet.

Im folgenden Beispiel wird das Modell des Rohdatensatzes als Vergleichspunkt ausgewertet.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# logistisches Regressionsmodell für Rohdaten auswerten
von numpy import mean
von numpy importieren Sie std
aus sklearn.datensätze importieren make_classification
aus sklearn.model_selection import cross_val_score
von sklearn.model_selection import RepeatedStratifiedKFold
von sklearn.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the model
model = LogisticRegression()
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy‘, cv=cv, n_jobs=-1)
# report performance
print(‚Accuracy: %.3f (%.3f)‘ % (mean(n_scores), std(n_scores)))

Das Ausführen des Beispiels wertet die logistische Regression des Rohdatensatzes mit allen 20 Spalten aus und erreicht eine Klassifizierungsgenauigkeit von etwa 82,4 Prozent.

Eine erfolgreiche Dimensionalitätsreduktionstransformation für diese Daten sollte zu einem Modell führen, das eine bessere Genauigkeit als diese Baseline aufweist, obwohl dies möglicherweise nicht mit allen Techniken möglich ist.

Hinweis: Wir versuchen nicht, diesen Datensatz zu „lösen“, sondern stellen nur Arbeitsbeispiele zur Verfügung, die Sie als Ausgangspunkt verwenden können.

1
Accuracy: 0.824 (0.034)

Next, we can start looking at examples of dimensionality reduction algorithms applied to this dataset.

I have made some minimal attempts to tune each method to the dataset. Jede Dimensionalitätsreduktionsmethode wird so konfiguriert, dass die 20 Eingabespalten nach Möglichkeit auf 10 reduziert werden.

Wir werden eine Pipeline verwenden, um die Datentransformation und das Modell zu einer atomaren Einheit zu kombinieren, die mit dem Kreuzvalidierungsverfahren ausgewertet werden kann; zum Beispiel:

1
2
3
4

# define the pipeline
steps =
model = Pipeline(steps=steps)

Let’s get started.

Can you get a better result for one of the algorithms?
Lass es mich in den Kommentaren unten wissen.

Hauptkomponentenanalyse

Die Hauptkomponentenanalyse oder PCA ist möglicherweise die beliebteste Technik zur Reduzierung der Dimensionalität mit dichten Daten (wenige Nullwerte).

Weitere Informationen zur Funktionsweise von PCA finden Sie im Tutorial:

  • Wie man die Hauptkomponentenanalyse (PCA) in Python von Grund auf neu berechnet

Die scikit-learn-Bibliothek bietet die PCA-Klassenimplementierung der Hauptkomponentenanalyse, die als Datentransformation zur Dimensionsreduktion verwendet werden kann. Mit dem Argument „n_components“ kann die Anzahl der gewünschten Dimensionen in der Ausgabe der Transformation konfiguriert werden.

Das vollständige Beispiel für die Auswertung eines Modells mit PCA-Dimensionsreduktion ist unten aufgeführt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

klassifikation
von numpy import mean
von numpy import std
von sklearn.datensätze importieren make_classification
aus sklearn.model_selection import cross_val_score
von sklearn.model_selection import RepeatedStratifiedKFold
von sklearn.pipeline import Pipeline
von sklearn.bitte importieren Sie PCA
aus sklearn.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy‘, cv=cv, n_jobs=-1)
# report performance
print(‚Accuracy: %.3f (%.3f)‘ % (mean(n_scores), std(n_scores)))

Das Ausführen des Beispiels wertet die Modellierungspipeline mit Dimensionsreduktion und einem Vorhersagemodell für die logistische Regression aus.Hinweis: Ihre Ergebnisse können aufgrund der stochastischen Natur des Algorithmus oder des Auswertungsverfahrens oder aufgrund von Unterschieden in der numerischen Genauigkeit variieren. Führen Sie das Beispiel einige Male aus und vergleichen Sie das durchschnittliche Ergebnis.

In diesem Fall sehen wir keine Verbesserung der Modellleistung bei der Verwendung der PCA-Transformation.

1
Accuracy: 0.824 (0.034)

Singular Value Decomposition

Singular Value Decomposition, or SVD, is one of the most popular techniques for dimensionality reduction for sparse data (data with many zero values).

Weitere Informationen zur Funktionsweise von SVD finden Sie im Tutorial:

  • So berechnen Sie die SVD mit Python von Grund auf neu

Die scikit-learn-Bibliothek bietet die TruncatedSVD-Klassenimplementierung der singulären Wertzerlegung, die als Datentransformation zur Dimensionsreduktion verwendet werden kann. Mit dem Argument „n_components“ kann die Anzahl der gewünschten Dimensionen in der Ausgabe der Transformation konfiguriert werden.

Das vollständige Beispiel für die Auswertung eines Modells mit SVD-Dimensionsreduktion ist unten aufgeführt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

klassifikation
von numpy import mean
von numpy import std
von sklearn.datensätze importieren make_classification
aus sklearn.model_selection import cross_val_score
von sklearn.model_selection import RepeatedStratifiedKFold
von sklearn.pipeline import Pipeline
von sklearn.ich importiere TruncatedSVD
aus sklearn.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy‘, cv=cv, n_jobs=-1)
# report performance
print(‚Accuracy: %.3f (%.3f)‘ % (mean(n_scores), std(n_scores)))

Das Ausführen des Beispiels wertet die Modellierungspipeline mit Dimensionsreduktion und einem Vorhersagemodell für die logistische Regression aus.Hinweis: Ihre Ergebnisse können aufgrund der stochastischen Natur des Algorithmus oder des Auswertungsverfahrens oder aufgrund von Unterschieden in der numerischen Genauigkeit variieren. Führen Sie das Beispiel einige Male aus und vergleichen Sie das durchschnittliche Ergebnis.

In diesem Fall sehen wir keine Verbesserung der Modellleistung bei der Verwendung der SVD-Transformation.

1
Accuracy: 0.824 (0.034)

Linear Discriminant Analysis

Linear Discriminant Analysis, or LDA, is a multi-class classification algorithm that can be used for dimensionality reduction.

Die Anzahl der Dimensionen für die Projektion ist auf 1 und C-1 begrenzt, wobei C die Anzahl der Klassen ist. In diesem Fall ist unser Datensatz ein binäres Klassifizierungsproblem (zwei Klassen), das die Anzahl der Dimensionen auf 1 begrenzt.

Weitere Informationen zu LDA zur Dimensionsreduktion finden Sie im Tutorial:

  • Lineare Diskriminanzanalyse zur Dimensionsreduktion in Python

Die scikit-learn-Bibliothek bietet die LinearDiscriminantAnalysis-Klassenimplementierung der linearen Diskriminanzanalyse, die als Datentransformation zur Dimensionsreduktion verwendet werden kann. Mit dem Argument „n_components“ kann die Anzahl der gewünschten Dimensionen in der Ausgabe der Transformation konfiguriert werden.

Das vollständige Beispiel für die Auswertung eines Modells mit LDA-Dimensionalitätsreduktion ist unten aufgeführt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

klassifikation
von numpy import mean
von numpy import std
von sklearn.datensätze importieren make_classification
aus sklearn.model_selection import cross_val_score
von sklearn.model_selection import RepeatedStratifiedKFold
von sklearn.pipeline import Pipeline
von sklearn.discriminant_analysis importiert LinearDiscriminantAnalysis
aus sklearn.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy‘, cv=cv, n_jobs=-1)
# report performance
print(‚Accuracy: %.3f (%.3f)‘ % (mean(n_scores), std(n_scores)))

Das Ausführen des Beispiels wertet die Modellierungspipeline mit Dimensionsreduktion und einem Vorhersagemodell für die logistische Regression aus.Hinweis: Ihre Ergebnisse können aufgrund der stochastischen Natur des Algorithmus oder des Auswertungsverfahrens oder aufgrund von Unterschieden in der numerischen Genauigkeit variieren. Führen Sie das Beispiel einige Male aus und vergleichen Sie das durchschnittliche Ergebnis.

In diesem Fall können wir eine leichte Leistungssteigerung im Vergleich zur Baseline-Anpassung der Rohdaten feststellen.

1
Accuracy: 0.825 (0.034)

Isomap Embedding

Isomap Embedding, or Isomap, creates an embedding of the dataset and attempts to preserve the relationships in the dataset.

Die scikit-learn-Bibliothek stellt die Isomap-Klassenimplementierung der Isomap-Einbettung bereit, die als Datentransformation zur Reduzierung der Dimensionalität verwendet werden kann. Mit dem Argument „n_components“ kann die Anzahl der gewünschten Dimensionen in der Ausgabe der Transformation konfiguriert werden.

Das vollständige Beispiel für die Auswertung eines Modells mit SVD-Dimensionsreduktion ist unten aufgeführt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

klassifikation
von numpy import mean
von numpy import std
von sklearn.datensätze importieren make_classification
aus sklearn.model_selection import cross_val_score
von sklearn.model_selection import RepeatedStratifiedKFold
von sklearn.pipeline import Pipeline
von sklearn.ich importiere Isomap
aus sklearn.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy‘, cv=cv, n_jobs=-1)
# report performance
print(‚Accuracy: %.3f (%.3f)‘ % (mean(n_scores), std(n_scores)))

Das Ausführen des Beispiels wertet die Modellierungspipeline mit Dimensionsreduktion und einem Vorhersagemodell für die logistische Regression aus.Hinweis: Ihre Ergebnisse können aufgrund der stochastischen Natur des Algorithmus oder des Auswertungsverfahrens oder aufgrund von Unterschieden in der numerischen Genauigkeit variieren. Führen Sie das Beispiel einige Male aus und vergleichen Sie das durchschnittliche Ergebnis.

In diesem Fall können wir eine Leistungssteigerung mit der Isomap-Datentransformation im Vergleich zur Baseline-Anpassung an die Rohdaten feststellen.

1
Accuracy: 0.888 (0.029)

Locally Linear Embedding

Locally Linear Embedding, or LLE, creates an embedding of the dataset and attempts to preserve the relationships between neighborhoods in the dataset.

Die scikit-learn-Bibliothek stellt die Implementierung der LocallyLinearEmbedding-Klasse für die lokal lineare Einbettung bereit, die als Datentransformation zur Reduzierung der Dimensionalität verwendet werden kann. Das Argument „n_components“ kann gesetzt werden, um die Anzahl der gewünschten Dimensionen in der Ausgabe der Transformation zu konfigurieren

Das vollständige Beispiel für die Auswertung eines Modells mit LLE-Dimensionalitätsreduktion ist unten aufgeführt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

von numpy import mean
von numpy import std
von sklearn.datensätze importieren make_classification
aus sklearn.model_selection import cross_val_score
von sklearn.model_selection import RepeatedStratifiedKFold
von sklearn.pipeline import Pipeline
von sklearn.ich importiere LocallyLinearEmbedding
aus sklearn.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy‘, cv=cv, n_jobs=-1)
# report performance
print(‚Accuracy: %.3f (%.3f)‘ % (mean(n_scores), std(n_scores)))

Das Ausführen des Beispiels wertet die Modellierungspipeline mit Dimensionsreduktion und einem Vorhersagemodell für die logistische Regression aus.Hinweis: Ihre Ergebnisse können aufgrund der stochastischen Natur des Algorithmus oder des Auswertungsverfahrens oder aufgrund von Unterschieden in der numerischen Genauigkeit variieren. Führen Sie das Beispiel einige Male aus und vergleichen Sie das durchschnittliche Ergebnis.

In diesem Fall können wir eine Leistungssteigerung mit der LLE-Datentransformation im Vergleich zur Baseline-Anpassung an die Rohdaten feststellen.

1
Accuracy: 0.886 (0.028)

Modified Locally Linear Embedding

Modified Locally Linear Embedding, or Modified LLE, is an extension of Locally Linear Embedding that creates multiple weighting vectors for each neighborhood.

Die scikit-learn-Bibliothek stellt die Implementierung der LocallyLinearEmbedding-Klasse für die modifizierte lokal lineare Einbettung bereit, die als Datentransformation zur Reduzierung der Dimensionalität verwendet werden kann. Das Argument „method“ muss auf „modified“ gesetzt sein, und das Argument „n_components“ kann festgelegt werden, um die Anzahl der gewünschten Dimensionen in der Ausgabe der Transformation zu konfigurieren, die kleiner als das Argument „n_neighbors“ sein muss.

Das vollständige Beispiel für die Auswertung eines Modells mit modifizierter LLE-Dimensionalitätsreduktion ist unten aufgeführt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

klassifikation
von numpy import mean
von numpy import std
von sklearn.datensätze importieren make_classification
aus sklearn.model_selection import cross_val_score
von sklearn.model_selection import RepeatedStratifiedKFold
von sklearn.pipeline import Pipeline
von sklearn.ich importiere LocallyLinearEmbedding
aus sklearn.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy‘, cv=cv, n_jobs=-1)
# report performance
print(‚Accuracy: %.3f (%.3f)‘ % (mean(n_scores), std(n_scores)))

Das Ausführen des Beispiels wertet die Modellierungspipeline mit Dimensionsreduktion und einem Vorhersagemodell für die logistische Regression aus.Hinweis: Ihre Ergebnisse können aufgrund der stochastischen Natur des Algorithmus oder des Auswertungsverfahrens oder aufgrund von Unterschieden in der numerischen Genauigkeit variieren. Führen Sie das Beispiel einige Male aus und vergleichen Sie das durchschnittliche Ergebnis.

In diesem Fall können wir eine Leistungssteigerung mit der modifizierten LLE-Datentransformation im Vergleich zur Baseline-Anpassung an die Rohdaten feststellen.

1
Accuracy: 0.846 (0.036)

Further Reading

This section provides more resources on the topic if you are looking to go deeper.

Tutorials

  • Einführung in die Dimensionsreduktion für maschinelles Lernen
  • Hauptkomponentenanalyse zur Dimensionsreduktion in Python
  • Singularwertzerlegung zur Dimensionsreduktion in Python
  • Lineare Diskriminanzanalyse zur Dimensionsreduktion in Python

APIs

  • Zerlegung von Signalen in Komponenten, scikit-learn API.
  • Vielfältiges Lernen, scikit-learn API.

Zusammenfassung

In diesem Tutorial haben Sie herausgefunden, wie Sie Algorithmen zur Reduzierung der Top-Dimensionalität in Python anpassen und auswerten können.

Konkret haben Sie gelernt:

  • Dimensionalitätsreduktion sucht eine niederdimensionale Darstellung numerischer Eingabedaten, die die hervorstechenden Beziehungen in den Daten beibehält.
  • Es gibt viele verschiedene Dimensionalitätsreduktionsalgorithmen und keine einzige beste Methode für alle Datensätze.
  • Implementierung, Anpassung und Bewertung der Top-Dimensionalitätsreduktion in Python mit der scikit-learn Machine Learning Library.

Haben Sie Fragen?
Stellen Sie Ihre Fragen in den Kommentaren unten und ich werde mein Bestes tun, um zu antworten.

Moderne Datenaufbereitung in den Griff bekommen!

Datenvorbereitung für maschinelles Lernen

Bereiten Sie Ihre maschinellen Lerndaten in Minuten vor

…mit nur wenigen Zeilen Python-Code

Entdecken Sie, wie in meinem neuen Ebook:
Datenvorbereitung für maschinelles Lernen

Es bietet Tutorials zum Selbststudium mit vollständigem Arbeitscode zu:
Funktionsauswahl, RFE, Datenbereinigung, Datentransformationen, Skalierung, Dimensionsreduktion und vielem mehr…

Bringen Sie moderne Datenaufbereitungstechniken in Ihre Machine Learning-Projekte

Sehen Sie, was drin ist

Tweet teilen Teilen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.