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([[11], [21], [10],
...               [47], [35], [36]])
>>> clustering = SpectralCoclustering(n_clusters=2, random_state=0).fit(X)
>>> clustering.row_labels_ #doctest: +SKIP
array([011000], dtype=int32)
>>> clustering.column_labels_ #doctest: +SKIP
array([00], 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
估计器实例