【Python】数据可视化之聚类图

目录

clustermap

主要参数

参考实现


clustermap

sns.clustermap是Seaborn库中用于创建聚类热图的函数,该函数能够将数据集中的样本按照相似性进行聚类,并将聚类结果以矩阵的形式展示出来。

sns.clustermap主要用于绘制聚类热图,该热图通过颜色深浅来表示数据值的大小或类别,从而直观地展示数据间的相似性和差异性。在聚类热图中,每个样本被表示为一个方块,方块的颜色表示样本的特征值,方块的位置表示样本的聚类结果。

使用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的默认颜色映射方案。

参考实现

使用行和列聚类

复制代码
# 加载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)
)

为数据添加彩色标签

复制代码
# 创建一个字典,将species中的唯一值映射到"rbg"中的颜色
lut = dict(zip(species.unique(), "rbg"))
# 将species中的值映射到lut中的颜色
row_colors = species.map(lut)
# 使用seaborn的clustermap函数绘制聚类图,并将species的颜色映射到行颜色
sns.clustermap(iris, row_colors=row_colors)

使用不同的颜色映射

复制代码
# 使用seaborn库中的clustermap函数绘制聚类热图
# iris为数据集,cmap为颜色映射,vmin和vmax为颜色映射的最小值和最大值
sns.clustermap(iris, cmap="mako", vmin=0, vmax=10)

使用不同的聚类参数

复制代码
# 使用seaborn库中的clustermap函数,对iris数据集进行聚类分析
# metric参数指定聚类时使用的距离度量方式,这里使用相关系数
# method参数指定聚类时使用的聚类方法,这里使用单链接法
sns.clustermap(iris, metric="correlation", method="single")

按照标准化的数据绘图

复制代码
# 使用seaborn库中的clustermap函数对iris数据集进行聚类分析,并将标准化后的数据绘制成热图
sns.clustermap(iris, standard_scale=1)

以0为均值进行规范化

复制代码
# 使用seaborn库中的clustermap函数绘制聚类热图
# iris为数据集,z_score为0表示不进行标准化,cmap为"vlag"表示使用vlag颜色映射,center为0表示将数据集中的数值中心化
sns.clustermap(iris, z_score=0, cmap="vlag", center=0)
相关推荐
(・Д・)ノ1 小时前
python打卡day27
开发语言·python
小oo呆2 小时前
【学习心得】Jupyter 如何在conda的base环境中其他虚拟环境内核
python·jupyter·conda
小白学大数据3 小时前
Scrapy框架下地图爬虫的进度监控与优化策略
开发语言·爬虫·python·scrapy·数据分析
浊酒南街3 小时前
TensorFlow之微分求导
人工智能·python·tensorflow
立秋67893 小时前
用Python绘制梦幻星空
开发语言·python·pygame
alpszero3 小时前
YOLO11解决方案之对象裁剪探索
人工智能·python·计算机视觉·yolo11
白云千载尽3 小时前
相机、雷达标定工具,以及雷达自动标定的思路
python·自动驾驶·ros
招风的黑耳3 小时前
Axure设计的“广东省网络信息化大数据平台”数据可视化大屏
大数据·信息可视化·原型·数据可视化
咕噜咕噜啦啦4 小时前
python爬虫实战训练
爬虫·python
盛夏绽放4 小时前
Python字符串常用内置函数详解
服务器·开发语言·python