譜雙聚類#

class sklearn.cluster.SpectralBiclustering(n_clusters=3, *, method='bistochastic', n_components=6, n_best=3, svd_method='randomized', n_svd_vecs=None, mini_batch=False, init='k-means++', n_init=10, random_state=None)[原始碼]#

譜雙聚類 (Kluger, 2003)。

在假設數據具有底層棋盤結構的情況下,分割行和列。例如,如果有兩個行分割和三個列分割,則每行將屬於三個雙聚類,而每列將屬於兩個雙聚類。相應的行和列標籤向量的外積給出這個棋盤結構。

請在使用者指南中閱讀更多內容。

參數:
n_clustersint 或 tuple (n_row_clusters, n_column_clusters), default=3

棋盤結構中行和列聚類的數量。

method{‘bistochastic’, ‘scale’, ‘log’}, default='bistochastic'

將奇異向量正規化並轉換為雙聚類的方法。可以是 'scale'、'bistochastic' 或 'log' 其中之一。作者建議使用 'log'。但是,如果資料是稀疏的,則對數正規化將不起作用,這就是預設值為 'bistochastic' 的原因。

警告

如果 method='log',則資料不得為稀疏。

n_componentsint, default=6

要檢查的奇異向量數量。

n_bestint, default=3

用於將資料投影到聚類的最佳奇異向量數量。

svd_method{‘randomized’, ‘arpack’}, default='randomized'

選擇尋找奇異向量的演算法。可以是 'randomized' 或 'arpack'。如果為 'randomized',則使用 randomized_svd,對於大型矩陣來說可能更快。如果為 'arpack',則使用 scipy.sparse.linalg.svds,它更準確,但在某些情況下可能較慢。

n_svd_vecsint, default=None

用於計算 SVD 的向量數量。當 svd_method=arpack 時對應於 ncv,當 svd_method 為 'randomized' 時對應於 n_oversamples

mini_batchbool, default=False

是否使用迷你批次 k 平均值,它更快,但可能會得到不同的結果。

init{‘k-means++’, ‘random’} 或形狀為 (n_clusters, n_features) 的 ndarray, default='k-means++'

k 平均值演算法初始化的方法;預設為 'k-means++'。

n_initint, default=10

k 平均值演算法嘗試的隨機初始化次數。

如果使用迷你批次 k 平均值,則會選擇最佳初始化並執行一次演算法。否則,演算法會針對每次初始化執行,並選擇最佳解決方案。

random_stateint, RandomState 實例, default=None

用於隨機化奇異值分解和 k 平均值初始化。使用 int 可使隨機性具確定性。請參閱詞彙表

屬性:
rows_形狀為 (n_row_clusters, n_rows) 的類陣列

聚類的結果。rows[i, r] 如果聚類 i 包含行 r,則為 True。僅在呼叫 fit 後才可用。

columns_形狀為 (n_column_clusters, n_columns) 的類陣列

聚類的結果,類似於 rows

row_labels_形狀為 (n_rows,) 的類陣列

行分割標籤。

column_labels_形狀為 (n_cols,) 的類陣列

列分割標籤。

biclusters_兩個 ndarray 的元組

將行和列指標放在一起的便捷方法。

n_features_in_int

fit 期間看到的特徵數量。

在 0.24 版本中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

fit 期間看到的特徵名稱。僅當 X 具有都是字串的特徵名稱時才定義。

在 1.0 版本中新增。

另請參閱

SpectralCoclustering

譜共同聚類演算法 (Dhillon, 2001)。

參考文獻

範例

>>> from sklearn.cluster import SpectralBiclustering
>>> import numpy as np
>>> X = np.array([[1, 1], [2, 1], [1, 0],
...               [4, 7], [3, 5], [3, 6]])
>>> clustering = SpectralBiclustering(n_clusters=2, random_state=0).fit(X)
>>> clustering.row_labels_
array([1, 1, 1, 0, 0, 0], dtype=int32)
>>> clustering.column_labels_
array([1, 0], dtype=int32)
>>> clustering
SpectralBiclustering(n_clusters=2, random_state=0)

如需更詳細的範例,請參閱譜雙聚類演算法的示範

property biclusters_#

將行和列指標放在一起的便捷方法。

傳回 rows_columns_ 成員。

fit(X, y=None)[原始碼]#

為 X 建立雙向分群。

參數:
X形狀如 (n_samples, n_features) 的類陣列

訓練資料。

y忽略

依慣例,為了 API 的一致性而存在,不使用。

回傳值:
self物件

SpectralBiclustering 實例。

get_indices(i)[原始碼]#

i 個雙向叢集的列和行索引。

只有在 rows_columns_ 屬性存在時才有效。

參數:
i整數

叢集的索引。

回傳值:
row_indndarray, dtype=np.intp

資料集中屬於雙向叢集的列的索引。

col_indndarray, dtype=np.intp

資料集中屬於雙向叢集的行的索引。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請參閱 使用者指南 以了解路由機制如何運作。

回傳值:
routingMetadataRequest

封裝路由資訊的 MetadataRequest

get_params(deep=True)[原始碼]#

取得此估算器的參數。

參數:
deep布林值,預設值為 True

如果為 True,將會回傳此估算器和包含的子物件(也是估算器)的參數。

回傳值:
params字典

參數名稱對應到其值。

get_shape(i)[原始碼]#

i 個雙向叢集的形狀。

參數:
i整數

叢集的索引。

回傳值:
n_rows整數

雙向叢集中的列數。

n_cols整數

雙向叢集中的行數。

get_submatrix(i, data)[原始碼]#

回傳對應到雙向叢集 i 的子矩陣。

參數:
i整數

叢集的索引。

data形狀如 (n_samples, n_features) 的類陣列

資料。

回傳值:
submatrix形狀如 (n_rows, n_cols) 的 ndarray

對應到雙向叢集 i 的子矩陣。

註解

適用於稀疏矩陣。只有在 rows_columns_ 屬性存在時才有效。

set_params(**params)[原始碼]#

設定此估算器的參數。

此方法適用於簡單的估算器以及巢狀物件(例如 Pipeline)。後者具有 <component>__<parameter> 形式的參數,因此可以更新巢狀物件的每個元件。

參數:
**params字典

估算器參數。

回傳值:
self估算器實例

估算器實例。