当前位置: 首页 > news >正文

层次聚类分析

1、python语言

from scipy.cluster import hierarchy # 导入层次聚类算法
import matplotlib.pylab as plt
import numpy as np# 生成示例数据
np.random.seed(0)
data = np.random.random((20,1))# 使用树状图找到最佳聚类数
Z = hierarchy.linkage(data,method='weighted',metric='euclidean')
re = hierarchy.dendrogram(Z,color_threshold=0.2,above_threshold_color='#bcbddc')# 输出节点标签
print(re["ivl"])# 画图
plt.title('Dendrogram') # 标题
plt.xlabel('Customers') # 横标签
plt.ylabel('Euclidean distances') # 纵标签
plt.show()

dendrogram函数参数:

Z:层次聚类的结果,即通过scipy.cluster.hierarchy.linkage()函数计算得到的链接矩阵。
p:要显示的截取高度(y轴的阈值),可以用于确定划分群集的横线位置。
truncate_mode:指定截取模式。默认为None,表示不截取,可以选择 'lastp' 或 'mlab' 来截取显示。
labels:数据点的标签,以列表形式提供。
leaf_font_size:叶节点的字体大小。
leaf_rotation:叶节点的旋转角度。
show_leaf_counts:是否显示叶节点的数量。
show_contracted:是否显示合并的群集。
color_threshold:显示不同颜色的阈值,用于将不同群集算法聚类为不同颜色。
above_threshold_color:超过阈值的线段颜色。
orientation:图形的方向,可以选择 'top'、'bottom'、'left' 或 'right'。

假设我们输出Z值,获得以下结果:

from scipy.cluster import hierarchy # 导入层次聚类算法
import numpy as np
import pandas as pd# 生成示例数据
np.random.seed(0)
data = np.random.random((8,1))# 使用树状图找到最佳聚类数
Z = hierarchy.linkage(data,method='weighted',metric='euclidean')
row_dist_linkage = pd.DataFrame(Z,columns=['Row Label 1','Row Label 2','Distance','Item Number in Cluster'],index=['Cluster %d' % (i+1) for i in range(Z.shape[0])])
print("\nData Distance via Linkage: \n",row_dist_linkage)

其中,第一列和第二列代表节点标签,包含叶子和枝子;第三列代表叶叶(或叶枝,枝枝)之间的距离;第四列代表该层次类中含有的样本数(记录数)。注:因此,我们可以第三列距离结合图来确定不同簇的样本数量。这里的数量为(n-1),即样本总数减1。

2、R语言

setwd("D:/Desktop/0000/R") #更改路径df <- read.csv("iris.csv",header = T, row.names = 1) #读取工作路径文件
head(df) #查看前6行
hc <- hclust(dist(df))library(ggtree)ggtree(hc,layout="circular",branch.length = "daylight")+xlim(NA,3)+geom_tiplab2(offset=0.1,size=2)+#geom_text(aes(label=node))+geom_highlight(node = 152,fill="red")+geom_highlight(node=154,fill="steelblue")+geom_highlight(node=155,fill="green")+geom_cladelabel(node=152,label="virginica",offset=1.2,barsize = 2,vjust=-0.5,color="red")+geom_cladelabel(node=154,label="versicolor",offset=1.2,barsize = 2,hjust=1.2,color="steelblue")+geom_cladelabel(node=155,label="setosa",offset=1.2,barsize = 2,hjust=-1,color="green")

如果没有安装ggtree则先安装

install.packages("BiocManager")
BiocManager::install('ggtree')

除了上面这种方式外,我们还可以使用下面的方式获取(节点对齐):

setwd("D:/Desktop/0000/R") #更改路径
library(dendextend) #install.packages("dendextend")
library(circlize) #install.packages("circlize")df <- read.csv("iris.csv",header = T, row.names = 1) #读取工作路径文件
head(df) #查看前6行
aa <- hclust(dist(df))# 设置画布大小为4英寸宽,4英寸高
par(mar = c(4, 4, 2, 2) + 0.1)
png("output.png", width = 4, height = 4, units = "in", res = 600)hc <- as.dendrogram(aa) %>%set("branches_lwd", c(1.5)) %>% # 线条粗细set("labels_cex", c(.9)) # 字体大小# 颜色
hc <- hc %>%color_branches(k = 10) %>%  #树状分支线条颜色color_labels(k = 10)         #文字标签颜色# Fan tree plot with colored labels
circlize_dendrogram(hc,labels_track_height = NA,dend_track_height = 0.7)
# 结束绘图并关闭设备
dev.off()

文件数据样式:

更多学习视频:【R包使用】ggtree美化树状图_哔哩哔哩_bilibili、树状图展示聚类分析的结果_哔哩哔哩_bilibili

相关文章:

层次聚类分析

1、python语言 from scipy.cluster import hierarchy # 导入层次聚类算法 import matplotlib.pylab as plt import numpy as np# 生成示例数据 np.random.seed(0) data np.random.random((20,1))# 使用树状图找到最佳聚类数 Z hierarchy.linkage(data,methodweighted,metric…...

Jmeter性能实战之分布式压测

分布式执行原理 1、JMeter分布式测试时&#xff0c;选择其中一台作为调度机(master)&#xff0c;其它机器作为执行机(slave)。 2、执行时&#xff0c;master会把脚本发送到每台slave上&#xff0c;slave 拿到脚本后就开始执行&#xff0c;slave执行时不需要启动GUI&#xff0…...

学信息系统项目管理师第4版系列08_管理科学基础

1. 科学管理的实质 1.1. 反对凭经验、直觉、主观判断进行管理 1.2. 主张用最好的方法、最少的时间和支出&#xff0c;达到最高的工作效率和最大的效果 2. 资金的时间价值与等值计算 2.1. 资金的时间价值是指不同时间发生的等额资金在价值上的差别 2.2. 把资金存入银行&…...

从2023蓝帽杯0解题heapSpary入门堆喷

关于堆喷 堆喷射&#xff08;Heap Spraying&#xff09;是一种计算机安全攻击技术&#xff0c;它旨在在进程的堆中创建多个包含恶意负载的内存块。这种技术允许攻击者避免需要知道负载确切的内存地址&#xff0c;因为通过广泛地“喷射”堆&#xff0c;攻击者可以提高恶意负载被…...

基于SSM的学生宿舍管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…...

jvm 内存模型介绍

一、类加载子系统 1、类加载的过程&#xff1a;装载、链接、初始化&#xff0c;其中&#xff0c;链接又分为验证、准备和解析 装载&#xff1a;加载class文件 验证&#xff1a;确保字节流中包含信息符合当前虚拟机要求 准备&#xff1a;分配内存&#xff0c;设置初始值 解析&a…...

用Jmeter进行压测详解

简介&#xff1a; 1.概述 一款工具&#xff0c;功能往往是很多的&#xff0c;细枝末节的地方也很多&#xff0c;实际的测试工作中&#xff0c;绝大多数场景会用到的也就是一些核心功能&#xff0c;根本不需要我们事无巨细的去掌握工具的所有功能。所以本文将用带价最小的方式讲…...

Mysql001:(库和表)操作SQL语句

目录&#xff1a; 》SQL通用规则说明 SQL分类&#xff1a; 》DDL&#xff08;数据定义&#xff1a;用于操作数据库、表、字段&#xff09; 》DML&#xff08;数据编辑&#xff1a;用于对表中的数据进行增删改&#xff09; 》DQL&#xff08;数据查询&#xff1a;用于对表中的数…...

甲骨文全区登录地址

日本东部 东京 https://console.ap-tokyo-1.oraclecloud.com https://console.ap-tokyo-1.oraclecloud.com 日本中部 大阪 https://console.ap-osaka-1.oraclecloud.com https://console.ap-osaka-1.oraclecloud.com 韩国中部 首尔 https://console.ap-seoul-1.oraclecloud.c…...

Java面试题第八天

一、Java面试题第八天 1.如何实现对象克隆&#xff1f; 浅克隆 浅克隆就是我们可以通过实现Cloneable接口&#xff0c;重写clone,这种方式就叫浅克隆&#xff0c;浅克隆 引用类型的属性&#xff0c;是指向同一个内存地址&#xff0c;但是如果引用类型的属性也进行浅克隆就是深…...

什么是同步容器和并发容器的实现?

同步容器和并发容器都是用于在多线程环境中管理数据的容器&#xff0c;但它们在实现和用法上有很大的区别。 同步容器&#xff1a; 同步容器是使用传统的同步机制&#xff08;如synchronized关键字或锁&#xff09;来保护容器内部数据结构的线程安全容器。同步容器通常是单线…...

学Python的漫画漫步进阶 -- 第十六步

学Python的漫画漫步进阶 -- 第十六步 十六、多线程16.1 线程相关的知识16.1.1 进程16.1.2 线程16.1.3 主线程 16.2 线程模块——threading16.3 创建子线程16.3.1 自定义函数实现线程体16.3.2 自定义线程类实现线程体 16.4 线程管理16.4.1 等待线程结束16.4.2 线程停止 16.5 动动…...

MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点5:数据字典(Data Dictionary)

文章目录 MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点5&#xff1a;数据字典(Data Dictionary)File-based Metadata Storage &#xff08;基于文件的元数据存储&#xff09;Transactional Data Dictionary &#xff08;事务数据字典&#xff09;Serialized Dictionary Informat…...

7分钟了解ChatGPT是如何运作的

ChatGPT是现在最为热门的聊天助手应用&#xff0c;它使用了一个大型语言模型(LLM)&#xff0c;即GPT-3.5。它通过大量的文本数据进行训练&#xff0c;以理解和生成人类语言。但是&#xff0c;你是否有了解过ChatGPT是如何运作的吗&#xff1f; 下面我们就一起通过这个视频来一起…...

蓝桥杯打卡Day8

文章目录 C翻转矩阵幂 一、C翻转IO链接 本题思路:本题需要找出顺时针旋转和逆时针旋转的规律&#xff0c;然后就可以解决该问题。 矩阵顺时针90旋转规律:列号变为行号&#xff0c;(n-行号-1)变为列号 规律:a[i][j]b[j][n-i1]; 矩阵逆时针90旋转规律:行号变为列号&#xff0…...

React 学习笔记目录

学习使用的开发工具 编译器 VSCode 开发语言工具 TypeScript /JavaScript 重要程度分类 一般 这个程度的知识点主要是达到熟练掌握即可&#xff0c;不用太深入研究和学习。 重要 这个程度的知识点主要是达到熟练掌握&#xff0c;并且内部的原理切要熟记&#xff0c;因为会关…...

一起Talk Android吧(第五百五十一回:如何自定义SplashScreen)

文章目录 概念介绍实现方法修改启动页中的内容修改启动页显示时间修改启动面消失时的页面各位看官们大家好,上一回中咱们说的例子是"如何适配SplashScreen",本章回中介绍的例子是" 如何自定义SplashScreen"。闲话休提,言归正转,让我们一起Talk Android…...

PYTHON-模拟练习题目集合

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…...

UE5学习笔记(1)——从源码开始编译安装UE5

目录 0. 前期准备1. Git bash here2. 克隆官方源码。3. 选择安装分支4. 运行Setup.bat&#xff0c;下载依赖文件5. 运行GenerateProjectFiles.bat生成工程文件6. 生成完成&#xff0c;找到UE5.sln/UE4.sln7. 大功告成 0. 前期准备 0.1 在windows的话&#xff0c;建议装一个Git…...

DP读书:《openEuler操作系统》(二)操作系统的发展史

操作系统的发展历史 操作系统的发展历史手工操作时代批处理系统多道程序系统分时操作系统CTSSMULTICS的历史UNIX和Linux的历史Debian系列Red Hat系列 DOS和Windows的历史DOS的历史&#xff1a;Windows的历史&#xff1a; Android和iOS的历史Android&#xff1a;iOS&#xff1a;…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...