sklearn.cluster.SpectralCoclustering?
class sklearn.cluster.SpectralCoclustering(n_clusters=3, *, svd_method='randomized', n_svd_vecs=None, mini_batch=False, init='k-means++', n_init=10, n_jobs='deprecated', random_state=None)
譜協聚類算法(Dishon,2001年)
對數組X
中的行和列進行聚類,以求由X生成的二分圖的松弛歸一化割集,如下:行頂點i
和列頂點j
之間的邊具有權重X[i,j]
。
由此產生的雙聚類結構是塊對角結構,因為每一行和每一列都正好屬于一個雙聚類結構。
支持稀疏矩陣,只要它們是非負的。
在用戶指南中閱讀更多內容。
參數 | 參數 |
---|---|
n_clusters | int, default=3 需要查找的聚類數。 |
svd_method | {‘randomized’, ‘arpack’}, default=’randomized’ 選擇尋找奇異向量的算法。可以是‘randomized’ 或者 ‘arpack’。如果是‘randomized’,則使用 randomized_svd ,這對于大型矩陣來說可能更快。如果是‘arpack’,則使用scipy.sparse.linalg.svds , 這更準確,但在某些情況下可能更慢。 |
n_svd_vecs | int, default=None 用于計算SVD的向量數。當 svd_method=arpack 時,對應于ncv ;當svd_method 為‘randomized時,對應于n_oversames 。 |
mini_batch | bool, default=False 是否使用小型批處理k-means,這會更快,但可能得到不同的結果。 |
init | {‘k-means++’, ‘random’} or ndarray of (n_clusters, n_features), default=’k-means++’ k-means算法初始化方法;默認為“k-means+”。 |
n_init | int, default=10 使用k-means算法嘗試的隨機初始化的次數。 如果使用小批量處理k-means,則選擇最佳初始化是只運行一次算法。否則,將對每個初始化和所選的最佳解決方案運行該算法。 |
n_jobs | int, default=None 用于計算的作業數。這是通過將成對的矩陣分解成n個均勻切片并并行計算來實現的。 從0.23版 n_jobs 開始不推薦使用*:從0.23版*開始不推薦使用,并將在0.25版中刪除。 |
random_state | int, RandomState instance, default=None 用于隨機化奇異值分解和k-means初始化。使用整數使隨機性確定。見Glossary。 |
屬性 | 方法 |
---|---|
rows_ | array-like of shape (n_row_clusters, n_rows) 聚類結果。如果聚類 i 包含行r , rows[i, r] 就是True。只有在調用fit 后才可用。 |
columns_ | array-like of shape (n_column_clusters, n_columns) 聚類結果, 和row 一致。 |
row_labels_ | array-like of shape (n_rows,) 行分區標簽 |
column_labels_ | array-like of shape (n_cols,) 列分區標簽 |
參考
Dhillon, Inderjit S, 2001. Co-clustering documents and words using bipartite spectral graph partitioning.
示例
>>> from sklearn.cluster import SpectralCoclustering
>>> import numpy as np
>>> X = np.array([[1, 1], [2, 1], [1, 0],
... [4, 7], [3, 5], [3, 6]])
>>> clustering = SpectralCoclustering(n_clusters=2, random_state=0).fit(X)
>>> clustering.row_labels_ #doctest: +SKIP
array([0, 1, 1, 0, 0, 0], dtype=int32)
>>> clustering.column_labels_ #doctest: +SKIP
array([0, 0], dtype=int32)
>>> clustering
SpectralCoclustering(n_clusters=2, random_state=0)
方法
方法 | 說明 |
---|---|
fit (self, X[, y]) |
對X創建雙聚類 |
get_indices (self, i) |
第i個雙聚類中行和列的索引 |
get_params (self[, deep]) |
獲取此估計器的參數 |
get_shape (self, i) |
第i個雙聚類的形狀 |
get_submatrix (self, i, data) |
返回與雙聚類i對應的子矩陣 |
set_params (self, **params) |
設置此估計器的參數 |
__init__(self, n_clusters=3, *, svd_method='randomized', n_svd_vecs=None, mini_batch=False, init='k-means++', n_init=10, n_jobs='deprecated', random_state=None)
初始化self。請參閱help(type(self))以獲得準確的說明。
property biclusters_
將行和列指示器組合在一起的方便方法
返回rows_
和 columns_
成員。
fit(self, X, y=None)
對X創建雙聚類
參數 | 說明 |
---|---|
X | array-like, shape (n_samples, n_features) |
y | Ignored |
get_indices(self, i)
第i個雙聚類中行和列的索引
只有在row_
和columns_
屬性存在的情況下才有用。
參數 | 說明 |
---|---|
i | int 簇的索引 |
返回值 | 說明 |
---|---|
row_ind | ndarray, dtype=np.intp 數據集中屬于雙聚類的行的索引。 |
col_ind | ndarray, dtype=np.intp 數據集中屬于雙聚類的列的索引。 |
get_params(self, deep=True)
獲取此估計器的參數
表格 | 說明 |
---|---|
deep | bool, default=True 如果為True,則將返回此估計器的參數和所包含的作為估計量的子對象。 |
返回值 | 說明 |
---|---|
params | mapping of string to any 映射到其值的參數名稱 |
get_shape(self, i)
獲取此估計器的參數
表格 | 說明 |
---|---|
i | int 簇的索引。 |
返回值 | 說明 |
---|---|
shape | tuple (int, int) 在雙聚類中的行數和列數 |
get_submatrix(self, i, data)
獲取此估計器的參數
表格 | 說明 |
---|---|
i | int 簇的索引。 |
data | array-like 數據 |
返回值 | 說明 |
---|---|
submatrix | ndarray 與雙聚類i對應的子矩陣 |
注
適用于稀疏矩陣。只有在row_
和columns
屬性存在的情況下才有用。
set_params(self, **params)
設置此估計器的參數
該方法適用于簡單估計器以及嵌套對象(例如pipelines)。后者具有表單的 <component>__<parameter>
參數,這樣就可以更新嵌套對象的每個組件。
表格 | 說明 |
---|---|
**params | dict 估計器參數 |
返回值 | 說明書 |
---|---|
self | object 估計器實例 |