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([[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([0, 1], 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 估计器实例 |