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 從密度=“自動”時計算的混凝土密度。 |
另見:
參考資料
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(100, 10000)
>>> transformer = SparseRandomProjection(random_state=rng)
>>> X_new = transformer.fit_transform(X)
>>> X_new.shape
(100, 3947)
>>> # 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] 投影陣列。 |