SparseRandomProjection#

class sklearn.random_projection.SparseRandomProjection(n_components='auto', *, density='auto', eps=0.1, dense_output=False, compute_inverse_components=False, random_state=None)[Quelle]#

Reduziert die Dimensionalität durch spärliche Zufallsprojektion.

Sparse Random Matrices sind eine Alternative zu dichten Zufallsprojektionsmatrizen, die eine ähnliche Einbettungsqualität garantieren, dabei aber viel speichereffizienter sind und eine schnellere Berechnung der projizierten Daten ermöglichen.

Wenn wir s = 1 / density die Komponenten der Zufallsmatrix bezeichnen, werden diese gezogen aus

-sqrt(s) / sqrt(n_components)   with probability 1 / 2s
 0                              with probability 1 - 1 / s
+sqrt(s) / sqrt(n_components)   with probability 1 / 2s

Lesen Sie mehr im Benutzerhandbuch.

Hinzugefügt in Version 0.13.

Parameter:
n_componentsint oder ‘auto’, Standardwert=’auto’

Dimensionalität des Zielprojektionsraums.

n_components kann automatisch entsprechend der Anzahl der Samples im Datensatz und der durch das Johnson-Lindenstrauss-Lemma gegebenen Schranke angepasst werden. In diesem Fall wird die Qualität der Einbettung durch den Parameter eps gesteuert.

Es sollte beachtet werden, dass das Johnson-Lindenstrauss-Lemma sehr konservative Schätzungen der erforderlichen Anzahl von Komponenten liefern kann, da es keine Annahmen über die Struktur des Datensatzes macht.

densityfloat oder ‘auto’, Standardwert=’auto’

Verhältnis im Bereich (0, 1] der Nicht-Null-Komponenten in der Zufallsprojektionsmatrix.

Wenn density = ‘auto’, wird der Wert auf die minimale Dichte gesetzt, wie von Ping Li et al. empfohlen: 1 / sqrt(n_features).

Verwenden Sie density = 1 / 3.0, wenn Sie die Ergebnisse von Achlioptas, 2001, reproduzieren möchten.

epsfloat, Standardwert=0.1

Parameter zur Steuerung der Qualität der Einbettung gemäß dem Johnson-Lindenstrauss-Lemma, wenn n_components auf ‘auto’ gesetzt ist. Dieser Wert sollte strikt positiv sein.

Kleinere Werte führen zu einer besseren Einbettung und einer höheren Anzahl von Dimensionen (n_components) im Zielprojektionsraum.

dense_outputbool, Standardwert=False

Wenn True, wird sichergestellt, dass die Ausgabe der Zufallsprojektion ein dichtes numpy-Array ist, auch wenn die Eingabe und die Zufallsprojektionsmatrix beide spärlich sind. In der Praxis, wenn die Anzahl der Komponenten gering ist, wird die Anzahl der Nullkomponenten in den projizierten Daten sehr klein sein, und es wird CPU- und speichereffizienter sein, eine dichte Darstellung zu verwenden.

Wenn False, verwendet die projizierte Daten eine spärliche Darstellung, wenn die Eingabe spärlich ist.

compute_inverse_componentsbool, Standardwert=False

Lernt die inverse Transformation durch Berechnung der Pseudoinversen der Komponenten während des `fit`. Beachten Sie, dass die Pseudoinverse immer ein dichtes Array ist, auch wenn die Trainingsdaten spärlich waren. Das bedeutet, dass es notwendig sein kann, inverse_transform auf einem kleinen Stapel von Samples gleichzeitig aufzurufen, um zu vermeiden, dass der verfügbare Speicher des Hosts erschöpft wird. Darüber hinaus skaliert die Berechnung der Pseudoinversen nicht gut für große Matrizen.

random_stateint, RandomState-Instanz oder None, default=None

Steuert den Pseudozufallszahlengenerator, der zum Erzeugen der Projektionsmatrix zur Anpassungszeit verwendet wird. Übergeben Sie eine Ganzzahl für reproduzierbare Ausgaben über mehrere Funktionsaufrufe hinweg. Siehe Glossar.

Attribute:
n_components_int

Konkrete Anzahl von Komponenten, die berechnet werden, wenn n_components="auto".

components_sparse matrix von shape (n_components, n_features)

Zufallsmatrix für die Projektion. Die spärliche Matrix hat das CSR-Format.

inverse_components_ndarray von shape (n_features, n_components)

Pseudoinverse der Komponenten, wird nur berechnet, wenn compute_inverse_components True ist.

Hinzugefügt in Version 1.1.

density_float im Bereich 0.0 - 1.0

Konkrete Dichte, berechnet aus, wenn density = "auto".

n_features_in_int

Anzahl der während des fits gesehenen Merkmale.

Hinzugefügt in Version 0.24.

feature_names_in_ndarray mit Form (n_features_in_,)

Namen der während fit gesehenen Merkmale. Nur definiert, wenn X Merkmalnamen hat, die alle Zeichenketten sind.

Hinzugefügt in Version 1.0.

Siehe auch

GaussianRandomProjection

Reduziert die Dimensionalität durch gaußsche Zufallsprojektion.

Referenzen

[1]

Ping Li, T. Hastie und K. W. Church, 2006, “Very Sparse Random Projections”. https://web.stanford.edu/~hastie/Papers/Ping/KDD06_rp.pdf

[2]

D. Achlioptas, 2001, “Database-friendly random projections”, https://cgi.di.uoa.gr/~optas/papers/jl.pdf

Beispiele

>>> import numpy as np
>>> from sklearn.random_projection import SparseRandomProjection
>>> rng = np.random.RandomState(42)
>>> X = rng.rand(25, 3000)
>>> transformer = SparseRandomProjection(random_state=rng)
>>> X_new = transformer.fit_transform(X)
>>> X_new.shape
(25, 2759)
>>> # very few components are non-zero
>>> np.mean(transformer.components_ != 0)
np.float64(0.0182)
fit(X, y=None)[Quelle]#

Generiert eine spärliche Zufallsprojektionsmatrix.

Parameter:
X{ndarray, sparse matrix} der Form (n_samples, n_features)

Trainingsdatensatz: Nur die Form wird verwendet, um optimale Zufallsmatrizendimensionen basierend auf der Theorie zu finden, die in den oben genannten Papieren referenziert wird.

yIgnoriert

Nicht verwendet, hier zur API-Konsistenz durch Konvention vorhanden.

Gibt zurück:
selfobject

Instanz der BaseRandomProjection-Klasse.

fit_transform(X, y=None, **fit_params)[Quelle]#

An Daten anpassen, dann transformieren.

Passt den Transformer an X und y mit optionalen Parametern fit_params an und gibt eine transformierte Version von X zurück.

Parameter:
Xarray-like der Form (n_samples, n_features)

Eingabestichproben.

yarray-like der Form (n_samples,) oder (n_samples, n_outputs), Standardwert=None

Zielwerte (None für unüberwachte Transformationen).

**fit_paramsdict

Zusätzliche Fit-Parameter. Nur übergeben, wenn der Estimator zusätzliche Parameter in seiner fit-Methode akzeptiert.

Gibt zurück:
X_newndarray array der Form (n_samples, n_features_new)

Transformiertes Array.

get_feature_names_out(input_features=None)[Quelle]#

Holt die Ausgabemerkmale für die Transformation.

Die Feature-Namen werden mit dem kleingeschriebenen Klassennamen präfixiert. Wenn der Transformer z.B. 3 Features ausgibt, dann sind die Feature-Namen: ["klassenname0", "klassenname1", "klassenname2"].

Parameter:
input_featuresarray-like von str oder None, default=None

Wird nur verwendet, um die Feature-Namen mit den in fit gesehenen Namen zu validieren.

Gibt zurück:
feature_names_outndarray von str-Objekten

Transformierte Merkmalnamen.

get_metadata_routing()[Quelle]#

Holt das Metadaten-Routing dieses Objekts.

Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.

Gibt zurück:
routingMetadataRequest

Ein MetadataRequest, der Routing-Informationen kapselt.

get_params(deep=True)[Quelle]#

Holt Parameter für diesen Schätzer.

Parameter:
deepbool, default=True

Wenn True, werden die Parameter für diesen Schätzer und die enthaltenen Unterobjekte, die Schätzer sind, zurückgegeben.

Gibt zurück:
paramsdict

Parameternamen, zugeordnet ihren Werten.

inverse_transform(X)[Quelle]#

Projeziert Daten zurück in ihren ursprünglichen Raum.

Gibt ein Array X_original zurück, dessen Transformation X wäre. Beachten Sie, dass X_original dicht ist, auch wenn X spärlich ist: Dies kann viel RAM beanspruchen.

Wenn compute_inverse_components False ist, wird die Inverse der Komponenten bei jedem Aufruf von inverse_transform berechnet, was kostspielig sein kann.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_components)

Zu transformierende Daten zurück.

Gibt zurück:
X_originalndarray von der Form (n_samples, n_features)

Rekonstruierte Daten.

set_output(*, transform=None)[Quelle]#

Ausgabecontainer festlegen.

Siehe Einführung in die set_output API für ein Beispiel zur Verwendung der API.

Parameter:
transform{“default”, “pandas”, “polars”}, default=None

Konfiguriert die Ausgabe von transform und fit_transform.

  • "default": Standardausgabeformat eines Transformers

  • "pandas": DataFrame-Ausgabe

  • "polars": Polars-Ausgabe

  • None: Die Transformationskonfiguration bleibt unverändert

Hinzugefügt in Version 1.4: Die Option "polars" wurde hinzugefügt.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.

set_params(**params)[Quelle]#

Setzt die Parameter dieses Schätzers.

Die Methode funktioniert sowohl bei einfachen Schätzern als auch bei verschachtelten Objekten (wie Pipeline). Letztere haben Parameter der Form <component>__<parameter>, so dass es möglich ist, jede Komponente eines verschachtelten Objekts zu aktualisieren.

Parameter:
**paramsdict

Schätzer-Parameter.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.

transform(X)[Quelle]#

Projiziert die Daten durch Matrixmultiplikation mit der Zufallsmatrix.

Parameter:
X{ndarray, sparse matrix} der Form (n_samples, n_features)

Die Eingabedaten, die in einen kleinerdimensionalen Raum projiziert werden sollen.

Gibt zurück:
X_new{ndarray, sparse matrix} von shape (n_samples, n_components)

Projizierter Array. Es ist eine spärliche Matrix nur dann, wenn die Eingabe spärlich und dense_output = False ist.