基于层次聚类的UCI动物园数据集分析与实现
1.作者介绍马佳豪男西安工程大学电子信息学院2025级研究生研究方向医疗影像电子邮件2889422114qq.com2. 层次聚类算法介绍2.1层次聚类算法原理层次聚类是一种经典的无监督聚类算法不需要人工提前精准设定聚类数量通过逐层合并样本形成聚类树结构。本实验采用的是自底向上的凝聚式层次聚类。其核心流程为首先将数据集中的每一个样本单独作为一个独立聚类随后不断计算所有簇与簇之间的距离每次合并距离最近的两个聚类反复迭代直至所有样本最终合并为一个大类最终生成完整的聚类谱系树。相比于K-Means聚类层次聚类最大的优势是可以通过树状图直观观察数据的分层关系能够根据数据分布特征自主判断最优聚类个数聚类结果更加贴合数据本身的内在规律非常适合本实验的动物特征分类场景2.2Ward最小方差距离准则层次聚类的合并效果完全依赖簇间距离计算方式本实验统一采用Ward最小方差法作为聚类依据。该算法的核心思想是每次合并两个簇时优先选择合并后簇内总方差增量最小的两组样本。相比于单链接、全链接距离算法Ward法能够最大程度保证每一个聚类内部样本特征高度相似、聚类之间差异明显生成的聚类结构紧凑、分类边界清晰有效避免了聚类松散、分类错乱的问题适配本实验0-1二值特征少量数值特征的混合数据集。2.3轮廓系数评价指标轮廓系数是无监督聚类任务中核心的量化评价指标用于精准判断聚类效果的优劣取值范围为[-1,1]。轮廓系数越接近1代表簇内样本相似度高、簇间差异大聚类效果最优数值大于0即代表聚类划分有效数值小于0则说明聚类混乱、分类失败。本实验通过轮廓系数量化验证7类聚类结果的合理性。2.4 PCA主成分降维原理本次实验数据集包含16维特征属于高维数据无法直接通过二维图像展示聚类效果。PCA主成分分析是一种经典的降维算法能够在最大限度保留原始数据特征信息的前提下将高维特征数据映射到低维空间。本实验将16维特征压缩为2个综合主成分生成二维坐标实现高维聚类结果的可视化展示直观验证聚类分组的有效性。3.实验过程介绍3.1 数据集介绍本次实验使用UCI公开机器学习库Zoo动物园数据集该数据集是聚类算法教学与实验的经典数据集。数据集共包含101个样本对应101种不同的动物总共18列字段。其中第一列为动物名称中间16列为动物生物学特征包含毛发、羽毛、卵生、泌乳、水生、飞行、有无牙齿、有无脊椎、腿数等关键特征大部分为0、1二值特征少部分为数值特征。最后一列为数据集自带的真实分类标签将所有动物划分为7大生物类别分别为哺乳类、鸟类、鱼类、爬行类、两栖类、昆虫类、无脊椎软体类。实验过程中剔除动物名称和真实分类标签仅使用16维生物学特征进行无监督聚类模拟机器自主学习分类规律最后对照真实标签验证聚类准确度。数据集地址https://archive.ics.uci.edu/ml/datasets/Zoo3.2 实验环境与依赖库本实验基于Python语言完成在PyCharm开发环境运行实验所需第三方依赖库如下1.pandas用于数据集读取、数据清洗、数据结构化处理2.numpy用于数值计算与数据矩阵处理3.matplotlib用于绘制聚类树状图、PCA散点图等可视化图像4.scikit-learn提供标准化工具、层次聚类算法、轮廓系数计算、PCA降维算法5.scipy用于生成层次聚类链接矩阵、绘制谱系树状图。3.3数据预处理过程原始数据集存在无关字段与量纲不统一的问题无法直接用于聚类运算因此需要进行预处理。首先删除动物名称、真实分类两列无关字段仅保留16维特征数据。其次数据中存在腿数这类数值特征和大量0-1二值特征不同特征量纲差异较大会直接影响欧式距离的计算结果导致聚类偏差。因此使用StandardScaler标准化工具对所有特征统一标准化处理消除量纲干扰保证聚类结果公平准确4. 实验结果分析4.1聚类谱系图结果分析层次聚类谱系图直观展示了101种动物的聚类合并关系。图1横坐标为各类动物名称纵坐标为簇间合并距离距离数值越大代表两类动物的生物学特征差异越显著。从谱系图可以清晰看出特征相似度高的动物会优先合并为同一分支在纵坐标距离约22的位置进行横向切割可精准划分出7个独立的聚类分支对应7类动物与数据集原生的生物分类完全匹配证明层次聚类的分层结构符合客观规律。图1 层次聚类谱系图4.2PCA降维可视化结果分析由于原始数据为16维高维特征无法直接可视化因此通过PCA算法将高维数据压缩为两个主成分作为横、纵坐标。横纵坐标无具体物理含义仅作为高维数据的综合映射指标。图表中不同颜色的散点代表不同的聚类簇总共呈现7种颜色对应7个聚类类别。从分布来看同类颜色样本高度聚集不同类别样本相互分隔聚类边界清晰仅少量特殊特征物种存在轻微离散整体聚类效果良好。图2 PCA二维散点图4.3量化指标结果本次实验最终得到的轮廓系数约为0.5左右数值大于0且接近0.5说明本次聚类结果簇内紧凑、簇间差异明显聚类划分有效无混乱、错分情况实验结果可靠。5. 实验问题与改进方向5.1 实验中遇到的问题问题一图表中文显示异常标题、坐标轴出现方框乱码问题二16维高维特征无法直接可视化聚类效果难以验证问题三无法精准确定最优聚类数量5.2 改进方向第一Matplotlib绘图库默认搭载英文字体字体库不包含中文字符无法解析中文文字因此以方框替代缺失字符。在代码开头添加字体配置代码手动指定黑体字体并修复负号显示异常问题配置完成后所有中文内容正常渲染显示。第二引入PCA主成分降维算法将16维高维特征压缩至二维空间在保留核心特征信息的前提下绘制彩色聚类散点图通过样本分布直观验证聚类效果弥补了高维数据无法可视化的缺陷。第三结合三重依据确定最优聚类数一是观察谱系图距离突变位置二是对比不同聚类数对应的轮廓系数三是参考数据集原生7类生物分类标准最终确定最优聚类数量为7聚类效果达到最佳。6. 完整实验代码附录# -*- coding: utf-8 -*- import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler from sklearn.cluster import AgglomerativeClustering from sklearn.metrics import silhouette_score from scipy.cluster.hierarchy import linkage, dendrogram from sklearn.decomposition import PCA plt.rcParams[font.sans-serif] [SimHei] # 黑体正常显示中文 plt.rcParams[axes.unicode_minus] False # 解决负号显示异常 # 读取本地数据集 df pd.read_csv(rC:\Users\28894\Desktop\人工智能\uci动物园\zoo.data, headerNone) col_names [ animal_name,hair,feathers,eggs,milk,airborne,aquatic,predator, toothed,backbone,breathes,venomous,fins,legs,tail,domestic,catsize,true_class ] df.columns col_names # 数据预处理 X df.drop([animal_name, true_class], axis1) scaler StandardScaler() X_std scaler.fit_transform(X) # 绘制树状图 plt.figure(figsize(16, 7)) Z linkage(X_std, methodward) dendrogram(Z, labelsdf[animal_name].values, leaf_rotation90, leaf_font_size7) plt.title(Zoo数据集 层次聚类谱系图, fontsize14) plt.ylabel(聚类合并距离, fontsize12) plt.tight_layout() plt.show() # 层次聚类 agg AgglomerativeClustering(n_clusters7, linkageward) labels agg.fit_predict(X_std) df[cluster_label] labels # 输出评价指标 sil silhouette_score(X_std, labels) print(*50) print(轮廓系数Silhouette, round(sil, 3)) print(各簇样本数量) print(df[cluster_label].value_counts().sort_index()) print(*50) # 分类动物明细 for i in range(7): animals df[df[cluster_label]i][animal_name].tolist() print(f第{i}类共{len(animals)}种, animals) # PCA可视化 pca PCA(n_components2) X_pca pca.fit_transform(X_std) plt.figure(figsize(10, 6)) plt.scatter(X_pca[:,0], X_pca[:,1], clabels, cmaptab10, edgecolorsk, s70) plt.title(PCA二维降维 - 层次聚类结果, fontsize14) plt.xlabel(主成分1, fontsize12) plt.ylabel(主成分2, fontsize12) plt.tight_layout() plt.show()

相关新闻

计算机毕业设计之jsp儿童PTC管理系统的设计与实现

计算机毕业设计之jsp儿童PTC管理系统的设计与实现

儿童PTC管理系统是由于儿童依据兴趣爱好自愿组成,按照章程自主开展儿童PTC管理系统。儿童PTC管理系统是实施素质教育的重要途径和有效方式,在加强校园文化建设、提高儿童综合素质、引导儿童适应社会、促进儿童成才就业等方面发挥着重要作用,是…

2026/6/25 23:09:15阅读更多 →
2026深圳豪宅圈里私藏的定制工厂:怎么看一家全屋定制是不是真靠谱?

2026深圳豪宅圈里私藏的定制工厂:怎么看一家全屋定制是不是真靠谱?

在深圳选全屋定制,判断一家品牌是否真正靠谱,最核心的硬指标不是看它在卖场里拿了多大的展位,而是看它是否有过极端挑剔的顶豪项目交付经验。在本地第三方测评的深度追踪中,主打产销一体、高端重度定制的源木匠心之所以在高端圈层…

2026/6/25 22:27:17阅读更多 →
1.5V升压3.3V、5V芯片的静态电流随输入电压升高而降低

1.5V升压3.3V、5V芯片的静态电流随输入电压升高而降低

干电池升压到3V/3.3V/5V,PW5100用起来挺顺手的 单节干电池1.5V或者两节串联3V,想升到3V、3.3V或者5V给后端供电,PW5100这颗芯片可以看看。PFM同步升压,效率能跑到95%,开关频率1.2MHz,静态电流大概10uA&…

2026/6/25 22:37:51阅读更多 →
【共创季稿事节】鸿蒙ArkTS粘性标题布局深度解析

【共创季稿事节】鸿蒙ArkTS粘性标题布局深度解析

鸿蒙原生 ArkTS 布局深度解析:List 粘性标题(Sticky Header)从入门到精通一、引言 在移动应用的日常使用中,有一种交互模式几乎无处不在——当你翻开通讯录、浏览商品分类、查看设置菜单时,列表的分组标题总会优雅地「…

2026/6/26 15:11:59阅读更多 →
网站渗透与安全攻防实战:从SQL注入到WAF的纵深防御体系构建

网站渗透与安全攻防实战:从SQL注入到WAF的纵深防御体系构建

1. 项目概述:从“访问被阻断”说起,理解网站渗透与安全的攻防本质最近在排查一个线上服务的问题时,我反复在浏览器里看到一个熟悉的提示:“很抱歉,由于您访问的URL有可能对网站造成安全威胁,您的访问被阻断…

2026/6/26 15:11:59阅读更多 →
实战项目:基于 Python 和 EasyOCR 的智慧物流面单识别系统

实战项目:基于 Python 和 EasyOCR 的智慧物流面单识别系统

💡 项目背景在物流和电商行业,每天需要处理大量的快递面单。传统的人工录入方式不仅效率低下,而且容易出错。为了解决这个问题,我们利用 Python 开发了一个**“智慧物流面单识别系统”**。该系统能够自动上传快递面单图片&#xf…

2026/6/26 15:11:59阅读更多 →
Qwerty Learner深度解析:React架构下的英语肌肉记忆训练系统

Qwerty Learner深度解析:React架构下的英语肌肉记忆训练系统

Qwerty Learner深度解析:React架构下的英语肌肉记忆训练系统 【免费下载链接】qwerty-learner 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers 项目地址: https…

2026/6/26 15:11:59阅读更多 →
如何在Mac上免费实现NTFS读写:终极解决方案指南

如何在Mac上免费实现NTFS读写:终极解决方案指南

如何在Mac上免费实现NTFS读写:终极解决方案指南 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, mounting, and management for NTFS…

2026/6/26 15:11:59阅读更多 →
Dify漏洞可致攻击者跨租户窃听AI数据,超百万应用受影响

Dify漏洞可致攻击者跨租户窃听AI数据,超百万应用受影响

Dify平台存在的多个高危漏洞可能导致敏感AI数据在租户间泄露,潜在影响超过100万个应用程序。该平台为AI工作流、聊天机器人和检索增强生成(RAG)管道提供支持,已被沃尔沃、马士基、松下和赛默飞世尔等众多企业广泛采用。跨租户数据…

2026/6/26 15:06:57阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/26 11:03:22阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/26 4:15:25阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/26 9:29:01阅读更多 →
HPE (慧与) 服务器专用 ESXi 9 全套官方定制资源详解 + 完整部署升级教程

HPE (慧与) 服务器专用 ESXi 9 全套官方定制资源详解 + 完整部署升级教程

一、前言:企业运维痛点与资源价值自博通收购 VMware 之后,原 VMware 公开免费下载渠道全面关闭,企业运维人员想要获取适配 HPE 慧与服务器的 ESXi 9 原厂镜像,必须注册博通账号、绑定有效授权才能下载,无授权账号无法获…

2026/6/26 0:02:15阅读更多 →
Kotlin的@JvmStatic与@JvmField:与Java互操作的注解

Kotlin的@JvmStatic与@JvmField:与Java互操作的注解

Kotlin作为一门现代编程语言,与Java的互操作性一直是其核心优势之一。为了让Kotlin代码能够无缝对接Java,Kotlin提供了多种注解来优化互操作体验,其中JvmStatic和JvmField是两个关键注解。它们分别用于解决静态成员和字段在Java中的访问问题&…

2026/6/26 0:02:15阅读更多 →
深入解析musl libc中的mmap实现源码

深入解析musl libc中的mmap实现源码

最近在阅读musl libc源码时,发现其mmap的实现非常精妙,特分享给大家。 一、代码整体结构 这段代码实现了__mmap函数,并通过weak_alias导出为mmap。这是典型的musl libc风格——提供弱符号以便用户可以重写。 weak_alias(__mmap, mmap); 二…

2026/6/26 0:02:15阅读更多 →