mojolearn.johnson_lindenstrauss_min_dim#

mojolearn.johnson_lindenstrauss_min_dim(n_samples, *, eps=0.1)[source]#

Minimum dimension for a random projection that keeps distances within eps.

Follows scikit-learn’s johnson_lindenstrauss_min_dim for a single n_samples and eps (scalars only): 4 log(n_samples) / (eps**2 / 2 - eps**3 / 3), truncated to an int.

Parameters:
  • n_samples (int) – Number of samples; must be greater than zero.

  • eps (float, default 0.1) – Maximum distortion, strictly between 0 and 1.

Returns:

int

Raises:

ValueError – If eps is not in (0, 1) or n_samples is not positive.

Examples

>>> import mojolearn
>>> d = mojolearn.johnson_lindenstrauss_min_dim(1000, eps=0.5)