sklearn.cluster.SpectralBiclustering

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, n_jobs='deprecated', random_state=None)

光谱双聚类(Kluger,2003年)

在假定数据具有底层棋盘结构的前提下对行和列进行分区。例如,如果有两个行分区和三个列分区,那么每一行将属于三个双簇,每个列将属于两个双簇。对应的行和列标签向量的外部乘积给出了这种棋盘结构。

用户指南中阅读更多内容。

参数 说明
n_clusters int or tuple (n_row_clusters, n_column_clusters), default=3
棋盘结构中的行和列的簇数。
method {‘bistochastic’, ‘scale’, ‘log’}, default=’bistochastic’
将奇异向量归一化并转换为双聚类的方法。可以是‘scale’, ‘bistochastic’, 或者 ‘log’中的一个。作者建议使用“log”。但是,如果数据稀疏,则log归一化将无法工作,这就是为什么默认的是‘bistochastic’。

警告:method=‘log’,数据必须是稀疏的。
n_components int, default=6
要检查的奇异向量数
n_best 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个均匀切片并并行计算来实现的。
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,)
列分区标签

参考

Kluger, Yuval, et. al., 2003. Spectral biclustering of microarray data: coclustering genes and conditions.

示例

>>> from sklearn.cluster import SpectralBiclustering
>>> import numpy as np
>>> X = np.array([[11], [21], [10],
...               [47], [35], [36]])
>>> clustering = SpectralBiclustering(n_clusters=2, random_state=0).fit(X)
>>> clustering.row_labels_
array([111000], dtype=int32)
>>> clustering.column_labels_
array([01], dtype=int32)
>>> clustering
SpectralBiclustering(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, *, method='bistochastic', n_components=6, n_best=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
估计器实例

sklearn.cluster.SpectralBiclustering使用示例