Scikit-learn 中的双聚类

Beginner

This tutorial is from open-source community. Access the source code

简介

双聚类是一种同时对数据矩阵的行和列进行聚类的方法。这使我们能够识别数据矩阵中具有特定属性的子矩阵。双聚类在包括数据分析、图像处理和生物信息学在内的各个领域都很有用。

在本实验中,我们将学习如何使用 scikit-learn 中的sklearn.cluster.bicluster模块执行双聚类。我们将探索两种常见的双聚类算法:谱共聚类(Spectral Co-Clustering)和谱双聚类(Spectral Biclustering)。这些算法在如何定义双聚类以及如何将行和列分配给双聚类方面有所不同。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签页,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。

导入必要的库和数据集

首先,让我们导入必要的库,并加载一个将用于双聚类的示例数据集。

import numpy as np
from sklearn.cluster import SpectralCoclustering, SpectralBiclustering

## Load sample data
data = np.arange(100).reshape(10, 10)

执行谱共聚类

现在,让我们使用谱共聚类算法进行双聚类。该算法会找到与其他行和列相比具有更高值的双聚类。

## Initialize and fit the Spectral Co-Clustering model
model_co = SpectralCoclustering(n_clusters=3, random_state=0)
model_co.fit(data)

## Get row and column cluster membership
row_clusters_co = model_co.row_labels_
column_clusters_co = model_co.column_labels_

执行谱双聚类

接下来,让我们使用谱双聚类算法进行双聚类。该算法假设数据矩阵具有隐藏的棋盘结构。

## Initialize and fit the Spectral Biclustering model
model_bi = SpectralBiclustering(n_clusters=(2, 3), random_state=0)
model_bi.fit(data)

## Get row and column cluster membership
row_clusters_bi = model_bi.row_labels_
column_clusters_bi = model_bi.column_labels_

可视化结果

最后,让我们可视化从谱共聚类和谱双聚类算法中获得的双聚类结构。

## Visualization for Spectral Co-Clustering
print("Spectral Co-Clustering:")
print("Row clusters:")
print(row_clusters_co)
print("Column clusters:")
print(column_clusters_co)

## Visualization for Spectral Biclustering
print("\nSpectral Biclustering:")
print("Row clusters:")
print(row_clusters_bi)
print("Column clusters:")
print(column_clusters_bi)

总结

在本实验中,我们学习了如何使用 scikit-learn 中的谱共聚类和谱双聚类算法执行双聚类。双聚类使我们能够同时对数据矩阵的行和列进行聚类,以识别具有特定属性的子矩阵。双聚类在各种数据分析任务中可能很有用,例如识别基因表达数据中的模式或在图像数据集中找到结构。