谱双聚类#
- 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)[source]#
谱双聚类 (Kluger, 2003)。
在数据具有底层棋盘结构的假设下,对行和列进行划分。例如,如果有两个行分区和三个列分区,则每行将属于三个双聚类,每列将属于两个双聚类。相应行和列标签向量的外积给出了这个棋盘结构。
在 用户指南 中了解更多信息。
- 参数:
- n_clustersint 或 tuple (n_row_clusters, n_column_clusters),默认为 3
棋盘结构中行和列聚类的数量。
- method{'bistochastic', 'scale', 'log'},默认为 'bistochastic'
将奇异向量归一化并转换为双聚类的方法。可以是 'scale'、'bistochastic' 或 'log' 之一。作者建议使用 'log'。但是,如果数据是稀疏的,则对数归一化将不起作用,这就是默认值为 'bistochastic' 的原因。
警告
如果
method='log'
,则数据不能是稀疏的。- n_componentsint,默认为 6
要检查的奇异向量数量。
- n_bestint,默认为 3
要将数据投影到其上进行聚类的最佳奇异向量的数量。
- svd_method{'randomized', 'arpack'},默认为 'randomized'
选择用于查找奇异向量的算法。可以是 'randomized' 或 'arpack'。如果为 'randomized',则使用
randomized_svd
,对于大型矩阵,这可能更快。如果为 'arpack',则使用scipy.sparse.linalg.svds
,这更准确,但在某些情况下可能较慢。- n_svd_vecsint,默认为 None
用于计算 SVD 的向量数量。当
svd_method=arpack
时对应于ncv
,当svd_method
为 'randomized' 时对应于n_oversamples
。- mini_batchbool,默认为 False
是否使用 mini-batch k-means,它更快,但可能得到不同的结果。
- init{'k-means++', 'random'} 或 shape 为 (n_clusters, n_features) 的 ndarray,默认为 'k-means++'
k-means 算法初始化的方法;默认为 'k-means++'。
- n_initint,默认为 10
使用 k-means 算法尝试的随机初始化次数。
如果使用 mini-batch k-means,则选择最佳初始化,并且算法运行一次。否则,算法将针对每个初始化运行,并选择最佳解决方案。
- random_stateint、RandomState 实例,默认为 None
用于随机化奇异值分解和 k-means 初始化。使用 int 使随机性确定性。参见 词汇表。
- 属性:
- rows_shape 为 (n_row_clusters, n_rows) 的类数组
聚类的结果。
rows[i, r]
为 True,如果聚类i
包含行r
。仅在调用fit
后可用。- columns_shape 为 (n_column_clusters, n_columns) 的类数组
聚类的结果,类似于
rows
。- row_labels_shape 为 (n_rows,) 的类数组
行分区标签。
- column_labels_shape 为 (n_cols,) 的类数组
列分区标签。
biclusters_
两个 ndarray 的元组方便地同时获取行和列指示器。
- n_features_in_int
在 拟合 期间看到的特征数量。
在 0.24 版本中添加。
- feature_names_in_shape 为 (
n_features_in_
,) 的 ndarray 在 拟合 期间看到的特征名称。仅当
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)[source]#
为 X 创建双聚类。
- 参数:
- Xshape 为 (n_samples, n_features) 的类数组
训练数据。
- y忽略
未使用,根据约定保留以保持 API 一致性。
- 返回:
- self对象
SpectralBiclustering 实例。
- get_indices(i)[source]#
第
i
个双聚类的行和列索引。只有在
rows_
和columns_
属性存在时才有效。- 参数:
- iint
聚类的索引。
- 返回:
- row_indndarray, dtype=np.intp
属于该双聚类的数集中行的索引。
- col_indndarray, dtype=np.intp
属于该双聚类的数集中列的索引。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查看 用户指南,了解路由机制的工作原理。
- 返回:
- routingMetadataRequest
一个
MetadataRequest
封装了路由信息。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deepbool, default=True
如果为 True,则将返回此估计器和包含的作为估计器的子对象的参数。
- 返回:
- paramsdict
参数名称与其值的映射。