johnson_lindenstrauss_min_dim#
- sklearn.random_projection.johnson_lindenstrauss_min_dim(n_samples, *, eps=0.1)[源代码]#
找到“安全”数量的组件来随机投影。
随机投影引入的失真
p
仅在欧几里得空间中以很大的可能性改变因子(1 +- eps)的方式改变两点之间的距离。投影p
是eps嵌入,定义如下:(1 - eps) ||u - v||^2 < ||p(u) - p(v)||^2 < (1 + eps) ||u - v||^2
其中u和v是从形状(n_samples,n_features)数据集中取出的任何行,eps是]0,1[并且p是形状(n_components,n_features)的随机高斯N(0,1)矩阵(或稀疏Achlioptas矩阵)的投影。
保证eps嵌入的分量的最小数目由下式给出:
n_components >= 4 log(n_samples) / (eps^2 / 2 - eps^3 / 3)
注意,维数与特征的原始数量无关,而是取决于数据集的大小:数据集越大,eps嵌入的最小维数就越高。
阅读更多的 User Guide .
- 参数:
- n_samplesint或int的类数组
样本数应该是大于0的整数。如果给定一个数组,它将按数组计算组件的安全数量。
- eps形状的浮点或类数组(n_components,),dype =float, 默认=0.1
最大失真率在约翰逊-林登施特劳斯引理定义的范围(0,1)内。如果给定一个数组,它将按数组计算组件的安全数量。
- 返回:
- n_componentsint或int的nd数组
保证具有n_samples的eps嵌入的最少组件数量。
引用
[2]Sanjoy Dasgupta and Anupam Gupta, 1999, "An elementary proof of the Johnson-Lindenstrauss Lemma." <https://citeseerx.ist.psu.edu/doc_view/pid/95cd464d27c25c9c8690b378b894d337cdf021f9>
_示例
>>> 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])