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

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

Read more

Flutter for OpenHarmony: Flutter 三方库 mongo_dart 助力鸿蒙应用直连 NoSQL 数据库构建高效的数据流转系统(纯 Dart 驱动方案)

Flutter for OpenHarmony: Flutter 三方库 mongo_dart 助力鸿蒙应用直连 NoSQL 数据库构建高效的数据流转系统(纯 Dart 驱动方案)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在进行 OpenHarmony 的工业巡检、内部管理系统或边缘计算(Edge Computing)应用开发时,有时我们需要鸿蒙前端应用直接与后端的 MongoDB 数据库进行交互,而不仅仅是通过传统的 Web API 转发。 mongo_dart 是一个极其强大的、全功能、纯 Dart 实现的 MongoDB 驱动程序。它不依赖任何原生底层驱动(如 C 驱动),通过 Dart 的 Socket 机制直接实现 BSON 协议封装。这意味着你在鸿蒙设备上无需配置复杂的 NDK 动态库,即可拥有连接、查询、甚至是实时聚合分析 MongoDB 数据的能力。 一、网络直连架构模型

By Ne0inhk
Flutter for OpenHarmony:dart_ping 网络诊断的瑞士军刀(支持 ICMP Ping) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:dart_ping 网络诊断的瑞士军刀(支持 ICMP Ping) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在应用开发中,网络连通性检测是一个强需求。 * 用户的网络是 WiFi 还是 4G? * 虽然连着 WiFi,但是否真的能通公网(Ping www.baidu.com)? * 连接内网服务器的延迟是多少? 虽然 connectivity_plus 可以告诉我们网络类型(WiFi/Mobile),但它无法检测实际的连通性(比如 WiFi 连上了但没网)。这时,最直接的手段就是 Ping。 dart_ping 是一个跨平台的 Dart Ping 库。它并不重新实现 ICMP 协议(那需要 root 权限),而是巧妙地封装了各操作系统的原生 ping 命令,并解析其输出流。 对于

By Ne0inhk
Flutter 三方库 super_log 的鸿蒙化适配指南 - 实现极具视觉冲击力的彩色终端日志、支持动态过滤与全局异常捕获

Flutter 三方库 super_log 的鸿蒙化适配指南 - 实现极具视觉冲击力的彩色终端日志、支持动态过滤与全局异常捕获

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 super_log 的鸿蒙化适配指南 - 实现极具视觉冲击力的彩色终端日志、支持动态过滤与全局异常捕获 前言 在进行 Flutter for OpenHarmony 的日常开发调试时,面对控制台里密密麻麻、死板单调的白色日志,开发者很容易在大海捞针般的排错过程中产生疲劳。super_log 是一个专注于日志可视化体验的增强库。它通过丰富的配色方案和清晰的结构化打印,让鸿蒙控制台里的每条日志都具备“辨识度”。本文将介绍如何在鸿蒙端利用 super_log 让你的代码“自白”得更加生动。 一、原理解析 / 概念介绍 1.1 基础原理 super_log 基于终端的 ANSI 颜色转义序列。它通过解析日志级别,并在输出字符串中自动嵌入特定的颜色代码。同时,它还内置了美观的边框修饰符(Box

By Ne0inhk
Flutter for OpenHarmony:injector 轻量级依赖注入库(比 GetIt 更简单的选择) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:injector 轻量级依赖注入库(比 GetIt 更简单的选择) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 依赖注入(Dependency Injection, DI)是解耦架构的核心。 在 Flutter 社区,get_it 是当之无愧的霸主,但有时候我们想要一个更简单、没有 Service Locator 模式那种“全局单例”味道的库,或者需要一个支持模块化注入的方案。 injector 是一个非常轻量的 DI 库。它不使用代码生成,提供基于构建器(Builder)的依赖注册机制。 对于 OpenHarmony 开发者,使用 DI 库可以将鸿蒙特定的实现(如 OhosPermissionService)与通用业务逻辑解耦,实现一套代码,多端运行。 一、核心原理 injector 的工作原理非常纯粹:它维护了一个 Map,

By Ne0inhk