【Seaborn】sns.clustermap() 函数:层次聚类热力图

sns.clustermap() —— 层次聚类热力图(Cluster Map)

seaborn.clustermap() 用于 对数据进行聚类(Clustering)并可视化热力图,适用于 数据分布分析、特征关联、相似性分析,特别适合 机器学习和数据挖掘


1. 语法

import seaborn as sns

sns.clustermap(data, method="average", metric="euclidean", cmap=None, standard_scale=None, z_score=None, annot=False)

主要参数

参数作用
data矩阵数据(DataFrame / Numpy 数组)
method聚类方法"single""complete""average""ward"
metric距离度量"euclidean""cosine""correlation"
cmap颜色方案(如 "coolwarm""Blues"
standard_scale对行/列归一化0 归一化行,1 归一化列)
z_scoreZ-score 标准化0 行标准化,1 列标准化)
annot是否 显示数值True 显示)

2. 相关性聚类

2.1 计算相关性矩阵并聚类

import seaborn as sns
import matplotlib.pyplot as plt

# 加载数据
data = sns.load_dataset("penguins")

# 计算相关性
corr = data.corr(numeric_only=True)

# 绘制层次聚类热力图
sns.clustermap(corr, method="average", cmap="coolwarm", annot=True)

plt.title("Feature Clustering Heatmap")
plt.show()

📌 作用

  • 自动对相关性矩阵聚类,找到相似的特征。
  • method="average" 使用 平均距离 计算聚类。
    在这里插入图片描述

2.2 只对行或列标准化

sns.clustermap(corr, cmap="coolwarm", z_score=0)  # 按行标准化
plt.show()

📌 作用

  • z_score=0对行进行标准化,使不同变量可比较。
    在这里插入图片描述

3. 适用于数据分布分析

3.1 生成随机数据并聚类

import numpy as np

# 生成 10x10 矩阵
data = np.random.rand(10, 10)

sns.clustermap(data, cmap="viridis", annot=True)

plt.show()

📌 作用

  • 适用于 查看数据分布 & 聚类结构
    在这里插入图片描述

3.2 选择不同距离度量

sns.clustermap(corr, metric="cosine", cmap="coolwarm", annot=True)
plt.show()

📌 作用

  • metric="cosine" 使用余弦相似度进行聚类
    在这里插入图片描述

3.3 选择不同聚类方法

sns.clustermap(corr, method="ward", cmap="coolwarm", annot=True)
plt.show()

📌 作用

  • method="ward" 使用 ward 进行层次聚类
    在这里插入图片描述

4. sns.clustermap() vs sns.heatmap()

sns.clustermap()sns.heatmap()
作用自动聚类静态热力图
适用于发现数据结构、聚类分析可视化矩阵
sns.heatmap(corr, cmap="coolwarm", annot=True)
plt.show()

在这里插入图片描述


5. 总结

sns.clustermap() 适用于层次聚类可视化,特别是相关性分析和数据挖掘
常见参数

  • method="ward" 不同聚类方法metric="euclidean" 不同距离度量
  • standard_scale=1 列归一化z_score=0 行标准化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值