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


Python sklearn SparseRandomProjection用法及代碼示例


本文簡要介紹python語言中 sklearn.random_projection.SparseRandomProjection 的用法。

用法:

class sklearn.random_projection.SparseRandomProjection(n_components='auto', *, density='auto', eps=0.1, dense_output=False, random_state=None)

通過稀疏隨機投影降低維度。

稀疏隨機矩陣是密集隨機投影矩陣的替代方案,它保證了相似的嵌入質量,同時內存效率更高並允許更快地計算投影數據。

如果我們注意到s = 1 / density,隨機矩陣的分量來自:

  • -sqrt(s) /sqrt(n_components) 概率為 1 /2s

  • 0 概率為 1 - 1 /s

  • +sqrt(s) /sqrt(n_components) 概率為 1 /2s

在用戶指南中閱讀更多信息。

參數

n_componentsint 或 ‘auto’,默認='auto'

目標投影空間的維度。

n_components 可以根據數據集中的樣本數量和Johnson-Lindenstrauss lemma 給出的界限自動調整。在這種情況下,嵌入的質量由eps 參數控製。

應該注意的是,Johnson-Lindenstrauss 引理可以對所需的組件數量產生非常保守的估計,因為它不對數據集的結構做出任何假設。

density浮點數或‘auto’,默認='auto'

隨機投影矩陣中非零分量在 (0, 1] 範圍內的比率。

如果密度 = ‘auto’,則將該值設置為 Ping Li 等人推薦的最小密度:1 /sqrt(n_features)。

如果您想重現 Achlioptas, 2001 的結果,請使用密度 = 1 /3.0。

eps浮點數,默認=0.1

當 n_components 設置為 ‘auto’ 時,根據 Johnson-Lindenstrauss 引理控製嵌入質量的參數。該值應嚴格為正。

較小的值會導致目標投影空間中更好的嵌入和更多的維度(n_components)。

dense_output布爾,默認=假

如果為 True,請確保隨機投影的輸出是密集的 numpy 數組,即使輸入和隨機投影矩陣都是稀疏的。在實踐中,如果組件的數量很少,則投影數據中零組件的數量將非常少,並且使用密集表示將更有 CPU 和內存效率。

如果為 False,如果輸入是稀疏的,則投影數據使用稀疏表示。

random_stateint、RandomState 實例或無,默認=無

控製用於在擬合時間生成投影矩陣的偽隨機數生成器。傳遞 int 以在多個函數調用之間實現可重現的輸出。請參閱術語表。

屬性

n_components_int

n_components=”auto”時計算的具體組件數量。

components_形狀的稀疏矩陣(n_components,n_features)

用於投影的隨機矩陣。稀疏矩陣將是 CSR 格式。

density_在 0.0 - 1.0 範圍內浮點數

當密度 = “auto” 時計算出的混凝土密度。

n_features_in_int

擬合期間看到的特征數。

feature_names_in_ndarray 形狀(n_features_in_,)

擬合期間看到的特征名稱。僅當 X 具有全為字符串的函數名稱時才定義。

參考

1

Ping Li、T. Hastie 和 K. W. Church,2006,“非常稀疏的隨機投影”。https://web.stanford.edu/~hastie/Papers/Ping/KDD06_rp.pdf

2

D. Achlioptas,2001,“Database-friendly 隨機投影”,https://users.soe.ucsc.edu/~optas/papers/jl.pdf

例子

>>> import numpy as np
>>> from sklearn.random_projection import SparseRandomProjection
>>> rng = np.random.RandomState(42)
>>> X = rng.rand(25, 3000)
>>> transformer = SparseRandomProjection(random_state=rng)
>>> X_new = transformer.fit_transform(X)
>>> X_new.shape
(25, 2759)
>>> # very few components are non-zero
>>> np.mean(transformer.components_ != 0)
0.0182...

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.random_projection.SparseRandomProjection。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。