基于层次聚类的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/7/18 7:55:07阅读更多 →
2026深圳豪宅圈里私藏的定制工厂:怎么看一家全屋定制是不是真靠谱?

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

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

2026/7/18 5:48:15阅读更多 →
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/7/18 6:12:27阅读更多 →
鸣潮终极自动化指南:5分钟实现游戏后台智能托管

鸣潮终极自动化指南:5分钟实现游戏后台智能托管

鸣潮终极自动化指南:5分钟实现游戏后台智能托管 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 你是否厌倦了每天重复刷…

2026/7/18 13:38:05阅读更多 →
三极管驱动MOSFET电路设计与优化指南

三极管驱动MOSFET电路设计与优化指南

1. 为什么需要三极管驱动MOSFET? 在电力电子和电机控制领域,MOSFET因其开关速度快、导通电阻低等优势被广泛应用。但直接使用微控制器GPIO驱动MOSFET存在几个关键问题: 首先,MOSFET的栅极相当于一个电容(Ciss&#xf…

2026/7/18 13:38:05阅读更多 →
Unity中世纪场景构建实战:从Stronghold Village资产到高效游戏开发

Unity中世纪场景构建实战:从Stronghold Village资产到高效游戏开发

1. 项目概述:为什么Stronghold Village是构建中世纪世界的“瑞士军刀” 如果你正在开发一款中世纪题材的游戏,无论是RPG、策略、模拟经营还是动作冒险,最头疼的环节之一,可能就是场景搭建。从零开始建模一座城堡、一个村庄&#x…

2026/7/18 13:38:05阅读更多 →
360AI搜索私有知识库接入全流程(含Nginx反向代理+SSL证书强制校验实操)

360AI搜索私有知识库接入全流程(含Nginx反向代理+SSL证书强制校验实操)

更多请点击: https://kaifayun.com 第一章:360AI搜索私有知识库接入概述 360AI搜索提供企业级私有知识库接入能力,支持将结构化与非结构化文档(如PDF、Word、Markdown、网页HTML等)安全导入至专属向量空间&#xff0c…

2026/7/18 13:38:05阅读更多 →
Java学习心得

Java学习心得

Java简介Java是一种强类型语言,每个变量都必须先定义才能使用,但是web前端开发中的html就是一种弱类型语言。例如:String a;System.out.println(a);其中,a没有初始化,会报错,应该改为:String a“…

2026/7/18 13:38:05阅读更多 →
UVa 694 The Collatz Sequence

UVa 694 The Collatz Sequence

题目描述 给定一个正整数 AAA 和限制值 LLL,根据 Collatz\texttt{Collatz}Collatz 序列生成规则: 若 A1A 1A1,停止;若 AAA 为偶数,则 AA/2A A / 2AA/2;若 AAA 为奇数,则 A3A1A 3A 1A3A1。 要…

2026/7/18 13:33:04阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/18 10:49:13阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/18 8:49:08阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/17 13:22:23阅读更多 →
从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

更多请点击: https://kaifayun.com 第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…

2026/7/18 0:00:14阅读更多 →
Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

更多请点击: https://codechina.net 第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

2026/7/18 0:00:14阅读更多 →
某智驾大牛创业

某智驾大牛创业

作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…

2026/7/18 0:00:14阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/17 22:48:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/17 13:22:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/17 17:26:50阅读更多 →