johnson_lindenstrauss_min_dim#
- sklearn.random_projection.johnson_lindenstrauss_min_dim(n_samples, *, eps=0.1)[Quellcode]#
Finde eine „sichere“ Anzahl von Komponenten für die zufällige Projektion.
Die durch eine zufällige Projektion
pverursachte Verzerrung ändert den Abstand zwischen zwei Punkten in einem Euklidischen Raum mit hoher Wahrscheinlichkeit nur um einen Faktor (1 +- eps). Die Projektionpist eine eps-Einbettung, wie definiert durch(1 - eps) ||u - v||^2 < ||p(u) - p(v)||^2 < (1 + eps) ||u - v||^2
wobei u und v beliebige Zeilen aus einem Datensatz der Form (n_samples, n_features) sind, eps im Bereich ]0, 1[ liegt und p eine Projektion durch eine zufällige Gaußsche N(0, 1)-Matrix der Form (n_components, n_features) (oder eine sparse Achlioptas-Matrix) ist.
Die minimale Anzahl von Komponenten, die die eps-Einbettung garantiert, ist gegeben durch
n_components >= 4 log(n_samples) / (eps^2 / 2 - eps^3 / 3)
Beachte, dass die Anzahl der Dimensionen unabhängig von der ursprünglichen Anzahl der Merkmale ist, sondern von der Größe des Datensatzes abhängt: Je größer der Datensatz, desto höher ist die minimale Dimensionalität einer eps-Einbettung.
Mehr dazu im Benutzerhandbuch.
- Parameter:
- n_samplesint oder array-ähnlich von int
Anzahl der Samples, die eine ganze Zahl größer als 0 sein muss. Wenn ein Array gegeben ist, wird eine sichere Anzahl von Komponenten Array-weise berechnet.
- epsfloat oder array-ähnlich der Form (n_components,), dtype=float, default=0.1
Maximale Verzerrungsrate im Bereich (0, 1), wie durch das Johnson-Lindenstrauss-Lemma definiert. Wenn ein Array gegeben ist, wird eine sichere Anzahl von Komponenten Array-weise berechnet.
- Gibt zurück:
- n_componentsint oder ndarray von int
Die minimale Anzahl von Komponenten, um mit guter Wahrscheinlichkeit eine eps-Einbettung mit n_samples zu garantieren.
Referenzen
Beispiele
>>> from sklearn.random_projection import johnson_lindenstrauss_min_dim >>> johnson_lindenstrauss_min_dim(1e6, eps=0.5) np.int64(663)
>>> johnson_lindenstrauss_min_dim(1e6, eps=[0.5, 0.1, 0.01]) array([ 663, 11841, 1112658])
>>> johnson_lindenstrauss_min_dim([1e4, 1e5, 1e6], eps=0.1) array([ 7894, 9868, 11841])
Galeriebeispiele#
Die Johnson-Lindenstrauss-Schranke für Einbettung mit zufälligen Projektionen