clustermap 函数
sns.clustermap 是 Seaborn 库中用于创建聚类热图的函数,该函数能够将数据集中的样本按照相似性进行聚类,并将聚类结果以矩阵的形式展示出来。
该函数主要用于绘制聚类热图,通过颜色深浅来表示数据值的大小或类别,从而直观地展示数据间的相似性和差异性。在聚类热图中,每个样本被表示为一个方块,方块的颜色表示样本的特征值,方块的位置表示样本的聚类结果。
使用 sns.clustermap 需要注意数据集的大小和复杂性,因为聚类分析可能需要较长的计算时间。可以根据需要对聚类热图进行进一步的自定义,如设置颜色映射、调整标签等。sns.clustermap 函数返回的是一个 ClusterGrid 对象,该对象包含了热图和聚类树等组件,可以通过该对象进行进一步的自定义和修改。
主要参数
- data:输入的数据集,可以是 Pandas DataFrame 或 NumPy 数组。
- row_cluster:布尔值,控制是否对行进行聚类。默认为 True。
- col_cluster:布尔值,控制是否对列进行聚类。默认为 True。
- metric:字符串或可调用对象,指定聚类时使用的距离度量方法。默认为'euclidean'。
- method:字符串,指定聚类时使用的算法。默认为'average'。
- standard_scale:布尔值或整数,控制是否对数据进行标准化处理。如果为 True,则按行进行标准化;如果为整数 n,则按前 n 个主成分进行标准化。默认为 None,不进行标准化处理。
- z_score:整数或布尔值,控制是否按行列计算 z 分数进行标准化。如果为整数 n,则按前 n 个主成分进行 z 分数标准化;如果为 True,则对整个数据集进行 z 分数标准化。默认为 None,不进行 z 分数标准化处理。
- cmap:字符串或 Colormap 对象,指定热图使用的颜色映射方案。默认为 Seaborn 的默认颜色映射方案。
参考实现
使用行和列聚类
import seaborn as sns
# 加载 iris 数据集
iris = sns.load_dataset("iris")
# 将 species 列从 iris 数据集中弹出,并赋值给 species 变量
species = iris.pop("species")
# 使用 seaborn 库中的 clustermap 函数,对 iris 数据集进行聚类分析
sns.clustermap(iris)

更改图片的大小和布局
sns.clustermap(
iris,
figsize=(7, 5),
row_cluster=False,
dendrogram_ratio=(.1, .2),
cbar_pos=(0, .2, .03, .4)
)

为数据添加彩色标签
lut = ((species.unique(), ))
row_colors = species.(lut)
sns.clustermap(iris, row_colors=row_colors)


