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, random_state=None)[source]#

谱系双聚类(Kluger,2003)[1]

在数据具有底层棋盘格结构的假设下对行和列进行分区。例如,如果存在两个行分区和三个列分区,则每行将属于三个双聚类,每列将属于两个双聚类。相应的行和列标签向量的外积形成了这种棋盘格结构。

用户指南中了解更多信息。

参数:
n_clustersint or tuple (n_row_clusters, n_column_clusters), default=3

棋盘格结构中的行和列聚类数。

method{‘bistochastic’, ‘scale’, ‘log’}, default=’bistochastic’

用于将奇异向量归一化并转换为双聚类的方法。可以是“scale”、“bistochastic”或“log”之一。作者推荐使用“log”。然而,如果数据稀疏,对数归一化将不起作用,这就是为什么默认设置为“bistochastic”。

警告

如果 method='log',则数据不得稀疏。

n_componentsint, default=6

要检查的奇异向量数。

n_bestint, default=3

用于聚类的数据投影的最佳奇异向量数。

svd_method{‘randomized’, ‘arpack’}, default=’randomized’

选择用于查找奇异向量的算法。可以是“randomized”或“arpack”。如果为“randomized”,则使用 randomized_svd,这对于大型矩阵可能更快。如果为“arpack”,则使用 scipy.sparse.linalg.svds,它更准确,但在某些情况下可能较慢。

n_svd_vecsint, default=None

用于计算 SVD 的向量数。对应于 svd_method=arpack 时的 ncv,以及 svd_method 为“randomized”时的 n_oversamples

mini_batchbool, default=False

是否使用 mini-batch k-means,它更快但可能会得到不同的结果。

init{‘k-means++’, ‘random’} or ndarray of shape (n_clusters, n_features), default=’k-means++’

k-means 算法的初始化方法;默认为“k-means++”。

n_initint, default=10

使用 k-means 算法尝试的随机初始化次数。

如果使用 mini-batch k-means,则选择最佳初始化并运行算法一次。否则,对每次初始化运行算法,并选择最佳解决方案。

random_stateint, RandomState instance, default=None

用于对奇异值分解和 k-means 初始化进行随机化。使用 int 使随机性确定。请参阅词汇表

属性:
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)

聚类结果,类似于 rows

row_labels_array-like of shape (n_rows,)

行分区标签。

column_labels_array-like of shape (n_cols,)

列分区标签。

biclusters_tuple of two ndarrays

将行和列指示器组合在一起的便捷方式。

n_features_in_int

拟合 期间看到的特征数。

0.24 版本新增。

feature_names_in_shape 为 (n_features_in_,) 的 ndarray

fit 期间看到的特征名称。仅当 X 具有全部为字符串的特征名称时才定义。

1.0 版本新增。

另请参阅

SpectralCoclustering

对数组 X 的行和列进行聚类,以解决由 X 创建的二分图的松弛归一化割问题。

References

示例

>>> 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)

有关更详细的示例,请参阅 谱系双聚类算法演示

fit(X, y=None)[source]#

为 X 创建双聚类。

参数:
Xshape 为 (n_samples, n_features) 的 array-like

训练数据。

y被忽略

未使用,按照惯例为保持 API 一致性而存在。

返回:
selfobject

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

参数名称映射到其值。

get_shape(i)[source]#

i 个双聚类的形状。

参数:
iint

聚类的索引。

返回:
n_rowsint

双聚类中的行数。

n_colsint

双聚类中的列数。

get_submatrix(i, data)[source]#

返回对应于双聚类 i 的子矩阵。

参数:
iint

聚类的索引。

dataarray-like of shape (n_samples, n_features)

数据。

返回:
submatrixndarray of shape (n_rows, n_cols)

对应于双聚类 i 的子矩阵。

注意事项

适用于稀疏矩阵。仅当 rows_columns_ 属性存在时才有效。

set_params(**params)[source]#

设置此估计器的参数。

此方法适用于简单的估计器以及嵌套对象(如 Pipeline)。后者具有 <component>__<parameter> 形式的参数,以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计器参数。

返回:
selfestimator instance

估计器实例。