当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn SparseRandomProjection用法及代码示例


本文简要介绍python语言中 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 / density,随机矩阵的分量来自:

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

  • 0 概率为 1 - 1 /s

  • +sqrt(s) /sqrt(n_components) 概率为 1 /2s

在用户指南中阅读更多信息。

参数

n_componentsint 或 ‘auto’,默认='auto'

目标投影空间的维度。

n_components 可以根据数据集中的样本数量和Johnson-Lindenstrauss lemma 给出的界限自动调整。在这种情况下,嵌入的质量由eps 参数控制。

应该注意的是,Johnson-Lindenstrauss 引理可以对所需的组件数量产生非常保守的估计,因为它不对数据集的结构做出任何假设。

density浮点数或‘auto’,默认='auto'

随机投影矩阵中非零分量在 (0, 1] 范围内的比率。

如果密度 = ‘auto’,则将该值设置为 Ping Li 等人推荐的最小密度:1 /sqrt(n_features)。

如果您想重现 Achlioptas, 2001 的结果,请使用密度 = 1 /3.0。

eps浮点数,默认=0.1

当 n_components 设置为 ‘auto’ 时,根据 Johnson-Lindenstrauss 引理控制嵌入质量的参数。该值应严格为正。

较小的值会导致目标投影空间中更好的嵌入和更多的维度(n_components)。

dense_output布尔,默认=假

如果为 True,请确保随机投影的输出是密集的 numpy 数组,即使输入和随机投影矩阵都是稀疏的。在实践中,如果组件的数量很少,则投影数据中零组件的数量将非常少,并且使用密集表示将更有 CPU 和内存效率。

如果为 False,如果输入是稀疏的,则投影数据使用稀疏表示。

random_stateint、RandomState 实例或无,默认=无

控制用于在拟合时间生成投影矩阵的伪随机数生成器。传递 int 以在多个函数调用之间实现可重现的输出。请参阅术语表。

属性

n_components_int

n_components=”auto”时计算的具体组件数量。

components_形状的稀疏矩阵(n_components,n_features)

用于投影的随机矩阵。稀疏矩阵将是 CSR 格式。

density_在 0.0 - 1.0 范围内浮点数

当密度 = “auto” 时计算出的混凝土密度。

n_features_in_int

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

拟合期间看到的特征名称。仅当 X 具有全为字符串的函数名称时才定义。

参考

1

Ping Li、T. Hastie 和 K. W. Church,2006,“非常稀疏的随机投影”。https://web.stanford.edu/~hastie/Papers/Ping/KDD06_rp.pdf

2

D. Achlioptas,2001,“Database-friendly 随机投影”,https://users.soe.ucsc.edu/~optas/papers/jl.pdf

例子

>>> 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)
0.0182...

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.random_projection.SparseRandomProjection。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。