sklearn.random_projection.SparseRandomProjection

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

[源码]

通过稀疏随机投影降低尺寸

稀疏随机矩阵是密集随机投影矩阵的替代,它可以保证相似的嵌入质量,同时具有更高的存储效率并可以更快地计算投影数据。

如果我们注意到s = 1 /密度,则随机矩阵的分量来自:

  • -sqrt(s)/ sqrt(n_components)的概率为1 / 2s
  • 0,概率为1-1 / s
  • sqrt / sqrt(n_components)的概率为1 / 2s

用户指南阅读更多内容。

版本0.13中的新功能。

参数 说明
n_components int or ‘auto’, optional (default = ‘auto’)
目标投影空间的尺寸。
n_components可以根据数据集中的样本数和Johnson-Lindenstrauss引理给出的边界自动调整。 在那种情况下,嵌入的质量由eps参数控制。
应当指出,Johnson-Lindenstrauss引理可以对所需的组件数进行非常保守的估计,因为它无需对数据集的结构进行假设。
density 如果density ='auto',则将其设置为Ping Li等人建议的最小密度:1 / sqrt(n_features)。
如果要重现Achlioptas,2001的结果,请使用density = 1 / 3.0。
eps strictly positive float, optional, (default=0.1)
当n_components设置为“ auto”时,根据Johnson-Lindenstrauss引理控制嵌入质量的参数。
较小的值导致在目标投影空间中更好的嵌入和更多的尺寸(n_components)。
dense_output boolean, optional (default=False)
如果为True,则即使输入矩阵和随机投影矩阵都很稀疏,也要确保随机投影的输出是密集的numpy数组。 实际上,如果组件数量少,则投影数据中零组件的数量将非常小,并且使用密集表示将提高CPU和内存的效率。

如果为False,则在输入稀疏的情况下,投影数据将使用稀疏表示。
random_state int, RandomState instance or None, optional (default=None)
控制用于在拟合时间生成投影矩阵的伪随机数生成器。 为多个函数调用传递可重复输出的int值。 请参阅词汇表
属性 说明
n_components_ int
当n_components =“ auto”时计算的具体组件数。
components_ CSR matrix with shape [n_components, n_features]
用于投影的随机矩阵。
density_ float in range 0.0 - 1.0
从密度=“自动”时计算的混凝土密度。

另见:

GaussianRandomProjection

参考资料

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://users.soe.ucsc.edu/~optas/papers/jl.pdf

示例

>>> from sklearn.random_projection import SparseRandomProjection
>>> rng = np.random.RandomState(42)
>>> X = rng.rand(10010000)
>>> transformer = SparseRandomProjection(random_state=rng)
>>> X_new = transformer.fit_transform(X)
>>> X_new.shape
(1003947)
>>> # very few components are non-zero
>>> np.mean(transformer.components_ != 0)
0.0100...

方法

方法 说明
fit(X[, y]) 生成稀疏随机投影矩阵
fit_transform(X[, y]) 适合数据,然后对其进行转换
get_params([deep]) 获取此估计量的参数。
set_params(**params) 设置此估算器的参数。
transform(X) 通过将矩阵乘积与随机矩阵一起使用来投影数据
__init__(n_components='auto', *, density='auto', eps=0.1, dense_output=False, random_state=None)

[源码]

初始化self, 请参阅help(type(self))以获得准确的说明

fit(X, y=None)

[源码]

生成稀疏随机投影矩阵

参数 说明
X numpy array or scipy.sparse of shape [n_samples, n_features]
训练集:根据上述论文中引用的理论,仅使用形状来找到最佳随机矩阵尺寸。
y 被忽略
返回值
self
fit_transform(X, y=None, **fit_params)

[源码]

适合数据,然后对其进行转换。

使用可选参数fit_params将转换器拟合到X和y,并返回X的转换版本。

参数 说明
X {array-like, sparse matrix, dataframe} of shape (n_samples, n_features)
y ndarray of shape (n_samples,), default=None
目标值。
**fit_params dict
其他拟合参数。
返回值 说明
X_new ndarray array of shape (n_samples, n_features_new)
转换后的数组。
get_params(deep=True)

[源码]

获取此估计量的参数

参数 说明
deep bool, default=True
如果为True,则将返回此估算器和作为估算器的包含子对象的参数。
返回值 说明
params mapping of string to any
参数名称映射到其值。
set_params(**params)

[源码]

设置此估算器的参数。

该方法适用于简单的估计器以及嵌套对象(例如管道)。 后者的参数格式为<component> __ <parameter>,以便可以更新嵌套对象的每个组件。

参数 说明
**params dict
估算器参数。
返回值 说明
self object
估算器实例。
transform(X)

[源码]

通过将矩阵乘积与随机矩阵一起使用来投影数据

参数 说明
X numpy array or scipy.sparse of shape [n_samples, n_features]
输入数据投影到较小的维空间中。
返回值 说明
X_new numpy array or scipy sparse of shape [n_samples, n_components]
投影阵列。