Johnson-Lindenstrauss 引理最小维度 #
- sklearn.random_projection.johnson_lindenstrauss_min_dim(n_samples, *, eps=0.1)[source]#
查找随机投影的“安全”组件数量。
随机投影
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-嵌入的最小维数就越高。
在用户指南中阅读更多内容。
- 参数:
- n_samples整数或整数数组
样本数量,应为大于0的整数。如果给定数组,它将逐个数组计算安全的组件数量。
- eps浮点数或形状为(n_components,)的数组,数据类型为float,默认值为0.1
根据Johnson-Lindenstrauss引理定义的(0, 1)范围内的最大失真率。如果给定数组,它将逐个数组计算安全的组件数量。
- 返回值:
- n_components整数或整数ndarray
保证具有良好概率的n_samples的eps-嵌入的最小组件数量。
参考文献
示例
>>> 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])
图库示例#
使用随机投影进行嵌入的Johnson-Lindenstrauss界限
使用随机投影进行嵌入的Johnson-Lindenstrauss界限