當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。