mputed when n_components="auto".

components_ : sparse matrix of shape (n_components, n_features)
    Random matrix used for the projection. Sparse matrix will be of CSR
    format.

inverse_components_ : ndarray of shape (n_features, n_components)
    Pseudo-inverse of the components, only computed if
    `compute_inverse_components` is True.

    .. versionadded:: 1.1

density_ : float in range 0.0 - 1.0
    Concrete density computed from when density = "auto".

n_features_in_ : int
    Number of features seen during :term:`fit`.

    .. versionadded:: 0.24

feature_names_in_ : ndarray of shape (`n_features_in_`,)
    Names of features seen during :term:`fit`. Defined only when `X`
    has feature names that are all strings.

    .. versionadded:: 1.0

See Also
--------
GaussianRandomProjection : Reduce dimensionality through Gaussian
    random projection.

References
----------

.. [1] Ping Li, T. Hastie and 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

Examples
--------
>>> 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...)
r%