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 估计器实例 |