层次聚类分析

一、层次聚类分析概述

层次聚类分析是一种将数据对象分组的技术,它根据数据对象之间的相异度构造一棵树形结构,对于给定的数据集,聚类分析将其划分成若干个组或类以满足数据的规律性和可视化的需要。分为凝聚式层次聚类和分裂式层次聚类两种方法。凝聚式从每个样本自身作为一个类开始,逐步将样本类别合并,分裂式从整个样本集开始,逐步将样本分成两个部分。

在聚类过程中,最好的划分是使类别内部的相似程度最高,而类别之间的相似程度最低。衡量这两个相似程度常使用欧氏距离、曼哈顿距离、闵可夫斯基距离等距离度量。

层次聚类应用非常广泛,如生物学、社会学等领域都应用了层次聚类手段。

二、凝聚式层次聚类

凝聚式层次聚类是另一种聚类方法,最开始每个样本自己一个类,样本之间的距离通过计算两个类之间的连线得到,将距离最近的两个类合并为一个类,更新距离矩阵。依次重复这个过程,直到所有样本被合并到一个类中。这个过程可以用一棵树表示,被称为树状图( Dendrogram)。

from scipy.cluster.hierarchy import dendrogram, linkageimport numpy as npimport matplotlib.pyplot as plt#生成数据np.random.seed(1)n = 100t1 = np.random.normal(loc=10, scale=2, size=(n, 2))t2 = np.random.normal(loc=3, scale=1, size=(n, 2))data = np.vstack([t1, t2])#层次聚类过程Z = linkage(data, method='ward', metric='euclidean')#获取树状图plt.figure(figsize=(16, 9))dendrogram(Z)plt.show()

三、分裂式层次聚类

分裂式层次聚类是另一种聚类方法,最开始所有样本都在一个类中,样本之间的距离通过计算此类的方差来得到。将该类拆分为两个类,使得拆分后的类内方差之和最小。依次重复这个过程,直到每个样本分别成为一个类为止。

from sklearn.cluster import AgglomerativeClusteringfrom sklearn.datasets import make_moonsimport matplotlib.pyplot as plt#生成数据X, y = make_moons(n_samples=300, noise=0.05, random_state=0)#层次聚类过程model = AgglomerativeClustering(n_clusters=2)model.fit(X)#可视化聚类结果plt.figure(figsize=(8, 6))plt.scatter(X[:, 0], X[:, 1], c=model.labels_, cmap='viridis')plt.show()    

四、优缺点

层次聚类分析可以直观描述聚类过程,可以生成树状图和热力图,有利于对聚类结果的解释和可视化;同时因为算法本身没有目标函数,对初始结果高度敏感,计算复杂度很高,对大型数据集不适用。

五、总结

层次聚类分析是一种基本而重要的聚类方法,常用于数据挖掘、统计学、生物信息、模式识别、社会网络分析等领域,在分析大型数据和模式发现上取得了积极的应用结果。在处理公司、商业、政策、数据分析和学术研究等方面也有一定的应用。

原创文章,作者:MVMKW,如若转载,请注明出处:https://www.506064.com/n/370103.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
MVMKWMVMKW
上一篇 2025-04-18 13:40
下一篇 2025-04-18 13:40

相关推荐

  • Python层次聚类

    一、层次聚类简介 层次聚类,也称为连锁聚类,顾名思义,便是将数据点逐层聚合的过程,直到构造出一棵树形结构,完成聚类。这个过程中,我们可以通过选择不同的距离度量方式和决策法则,得到不…

    编程 2025-04-18
  • OSI模型及其七个层次

    一、OSI模型是什么? OSI模型(Open System Interconnection Reference Model,即开放式系统互联参考模型)是一个计算机网络体系结构模型,…

    编程 2025-04-18
  • 层次分析法公式细解

    一、基本介绍 层次分析法(Analytic Hierarchy Process,AHP)是美国运筹学家托马斯 沙里特在20世纪70年代提出的一种系统性分析和综合各种复杂对立因素的数…

    编程 2025-01-27
  • 二叉树层序遍历递归python(递归层次遍历二叉树)

    本文目录一览: 1、Python 二叉树的创建和遍历、重建 2、编写一个程序,实现二叉树的先序遍历,中序遍历,后序遍历的各种递归和非递归算法,以及层次遍历的算法 3、层序遍历二叉树…

    编程 2025-01-06
  • 普通树的深度遍历c语言,树的层次遍历c语言

    本文目录一览: 1、C语言用三种不同的方法遍历二叉树并用两种方式排序 2、C语言创建二叉树 遍历 求深度 求解!! 3、C语言二叉树的创建和遍历 4、C语言二叉树遍历程序 5、C语…

    编程 2024-12-29
  • java层次聚类(层次聚类 密度聚类)

    本文目录一览: 1、三种聚类方法:层次、K均值、密度 2、层次聚类改进 3、层次聚类方法的聚类分类 三种聚类方法:层次、K均值、密度 一、层次聚类 1)距离和相似系数 r语言中使用…

    编程 2024-12-20
  • 如何编写打印 Python 异常/错误层次结构的代码?

    在本教程中,我们将看到如何编写打印 Python 错误层次结构的代码。但是在开始之前,我们应该了解什么是异常?异常是即使我们的代码语法正确也会发生的错误。这些不是无条件致命的,用户…

    编程 2024-12-19
  • 如何通过bottom border提高网站的视觉层次

    一、使用bottom border来强调重点信息 网站中的信息种类繁多,有些信息需要更加突出,这时候可以选择使用bottom border来强调重点信息。例如,对于一个重要的标题或…

    编程 2024-12-15
  • 输出二叉树的层次遍历c语言,遍历二叉树C语言

    本文目录一览: 1、急求C语言写二叉树的遍历 2、求用C语言实现二叉树层次遍历的递归算法,谢谢!!! 3、C语言 数据结构 二叉树层次遍历 4、如何用C语言实现层次遍历二叉树? 5…

    编程 2024-12-14
  • MySQLConnectBy——从层次结构中检索数据

    一、基本介绍 在数据库中,存在着一些包含树形结构的数据表,如组织架构、地理位置等。这些表中的数据往往存在父子关系,需要以树的形式展现出来。 MySQLConnectBy是一种特殊的…

    编程 2024-12-12

发表回复

登录后才能评论