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 嵌入的最小維度就越高。
請在使用者指南中閱讀更多內容。
- 參數:
- n_samples整數或類似整數的陣列
樣本數,應為大於 0 的整數。如果給定一個陣列,它將逐陣列計算安全的組件數量。
- eps浮點數或形狀為 (n_components,) 的類似陣列,dtype=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])