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 /密度,則隨機矩陣的分量來自:

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

用戶指南閱讀更多內容。

版本0.13中的新功能。

參數 說明
n_components int or ‘auto’, optional (default = ‘auto’)
目標投影空間的尺寸。
n_components可以根據數據集中的樣本數和Johnson-Lindenstrauss引理給出的邊界自動調整。 在那種情況下,嵌入的質量由eps參數控制。
應當指出,Johnson-Lindenstrauss引理可以對所需的組件數進行非常保守的估計,因為它無需對數據集的結構進行假設。
density 如果density ='auto',則將其設置為Ping Li等人建議的最小密度:1 / sqrt(n_features)。
如果要重現Achlioptas,2001的結果,請使用density = 1 / 3.0。
eps strictly positive float, optional, (default=0.1)
當n_components設置為“ auto”時,根據Johnson-Lindenstrauss引理控制嵌入質量的參數。
較小的值導致在目標投影空間中更好的嵌入和更多的尺寸(n_components)。
dense_output boolean, optional (default=False)
如果為True,則即使輸入矩陣和隨機投影矩陣都很稀疏,也要確保隨機投影的輸出是密集的numpy數組。 實際上,如果組件數量少,則投影數據中零組件的數量將非常小,并且使用密集表示將提高CPU和內存的效率。

如果為False,則在輸入稀疏的情況下,投影數據將使用稀疏表示。
random_state int, RandomState instance or None, optional (default=None)
控制用于在擬合時間生成投影矩陣的偽隨機數生成器。 為多個函數調用傳遞可重復輸出的int值。 請參閱詞匯表
屬性 說明
n_components_ int
當n_components =“ auto”時計算的具體組件數。
components_ CSR matrix with shape [n_components, n_features]
用于投影的隨機矩陣。
density_ float in range 0.0 - 1.0
從密度=“自動”時計算的混凝土密度。

另見:

GaussianRandomProjection

參考資料

1 Ping Li, T. Hastie and K. W. Church, 2006, “Very Sparse Random Projections”. https://web.stanford.edu/~hastie/Papers/Ping/KDD06_rp.pdf

2 D. Achlioptas, 2001, “Database-friendly random projections”, https://users.soe.ucsc.edu/~optas/papers/jl.pdf

示例

>>> from sklearn.random_projection import SparseRandomProjection
>>> rng = np.random.RandomState(42)
>>> X = rng.rand(10010000)
>>> transformer = SparseRandomProjection(random_state=rng)
>>> X_new = transformer.fit_transform(X)
>>> X_new.shape
(1003947)
>>> # very few components are non-zero
>>> np.mean(transformer.components_ != 0)
0.0100...

方法

方法 說明
fit(X[, y]) 生成稀疏隨機投影矩陣
fit_transform(X[, y]) 適合數據,然后對其進行轉換
get_params([deep]) 獲取此估計量的參數。
set_params(**params) 設置此估算器的參數。
transform(X) 通過將矩陣乘積與隨機矩陣一起使用來投影數據
__init__(n_components='auto', *, density='auto', eps=0.1, dense_output=False, random_state=None)

[源碼]

初始化self, 請參閱help(type(self))以獲得準確的說明

fit(X, y=None)

[源碼]

生成稀疏隨機投影矩陣

參數 說明
X numpy array or scipy.sparse of shape [n_samples, n_features]
訓練集:根據上述論文中引用的理論,僅使用形狀來找到最佳隨機矩陣尺寸。
y 被忽略
返回值
self
fit_transform(X, y=None, **fit_params)

[源碼]

適合數據,然后對其進行轉換。

使用可選參數fit_params將轉換器擬合到X和y,并返回X的轉換版本。

參數 說明
X {array-like, sparse matrix, dataframe} of shape (n_samples, n_features)
y ndarray of shape (n_samples,), default=None
目標值。
**fit_params dict
其他擬合參數。
返回值 說明
X_new ndarray array of shape (n_samples, n_features_new)
轉換后的數組。
get_params(deep=True)

[源碼]

獲取此估計量的參數

參數 說明
deep bool, default=True
如果為True,則將返回此估算器和作為估算器的包含子對象的參數。
返回值 說明
params mapping of string to any
參數名稱映射到其值。
set_params(**params)

[源碼]

設置此估算器的參數。

該方法適用于簡單的估計器以及嵌套對象(例如管道)。 后者的參數格式為<component> __ <parameter>,以便可以更新嵌套對象的每個組件。

參數 說明
**params dict
估算器參數。
返回值 說明
self object
估算器實例。
transform(X)

[源碼]

通過將矩陣乘積與隨機矩陣一起使用來投影數據

參數 說明
X numpy array or scipy.sparse of shape [n_samples, n_features]
輸入數據投影到較小的維空間中。
返回值 說明
X_new numpy array or scipy sparse of shape [n_samples, n_components]
投影陣列。