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


Python sklearn johnson_lindenstrauss_min_dim用法及代码示例


本文简要介绍python语言中 sklearn.random_projection.johnson_lindenstrauss_min_dim 的用法。

用法:

sklearn.random_projection.johnson_lindenstrauss_min_dim(n_samples, *, eps=0.1)

找到 ‘safe’ 数量的组件以随机投影到。

随机投影p 引入的失真仅在欧几里得空间中以一个因子 (1 +- eps) 改变两点之间的距离。投影p 是一个eps-embedding,定义如下:

(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-embedding 的最小组件数由下式给出:

n_components >= 4 log(n_samples) /(eps^2 /2 - eps^3 /3)

请注意,维数与原始特征数无关,而是取决于数据集的大小:数据集越大,eps-embedding 的最小维数就越高。

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

参数

n_samplesint 或类似数组的 int

应为大于 0 的整数的样本数。如果给定数组,它将计算安全数量的组件array-wise。

epsfloat 或 ndarray 形状 (n_components,), dtype=float, default=0.1

Johnson-Lindenstrauss 引理定义的范围 (0,1 ) 中的最大失真率。如果给定一个数组,它将计算安全数量的组件array-wise。

返回

n_componentsint 或 int 的 ndarray

保证具有 n_samples 的 eps-embedding 的最小组件数。

参考

1

https://en.wikipedia.org/wiki/Johnson%E2%80%93Lindenstrauss_lemma

2

Sanjoy Dasgupta 和 Anupam Gupta,1999,“Johnson-Lindenstrauss 引理的基本证明。”http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.45.3654

例子

>>> from sklearn.random_projection import johnson_lindenstrauss_min_dim
>>> johnson_lindenstrauss_min_dim(1e6, eps=0.5)
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])

相关用法


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