python 层次聚类算法图文示例

 更新时间:2023年03月22日 09:39:35   作者:冷冻工厂  
这篇文章主要介绍了python 层次聚类算法图文示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

  • 层次聚类是一种构建聚类层次结构的聚类算法。该算法从分配给它们自己的集群的所有数据点开始。然后将两个最近的集群合并到同一个集群中。最后,当只剩下一个集群时,该算法终止。
  • 可以通过观察树状图来选择最能描述不同组的簇数的决定。聚类数的最佳选择是树状图中垂直线的数量,该水平线可以垂直横穿最大距离而不与聚类相交。

1. 简介

层次聚类(Hierarchical clustering)是一种常见的聚类算法,它将数据点逐步地合并成越来越大的簇,直到达到某个停止条件。层次聚类可以分为两种方法:自下而上的聚合法(agglomerative)和自上而下的分 裂法(divisive)。在聚合法中,每个数据点最初被视为一个单独的簇,然后每次迭代将距离最近的两个簇合并为一个新的簇,直到所有点都合并成一个大簇。在分 裂法中,最初的簇被视为一个单独的簇,然后每次迭代将当前簇中距离最远的两个点分成两个新的簇,直到每个点都是一个簇为止。

2. 工作原理

  • 使每个数据点成为单点簇→形成N个簇
  • 取距离最近的两个数据点,使之成为一个簇→形成N-1个簇
  • 取最近的两个簇并使它们成为一个簇→形成N-2个簇。
  • 重复第 3 步,直到只剩下一个集群。

有几种方法可以测量聚类之间的距离以确定聚类规则,它们通常称为链接方法。一些常见的链接方法是:

  • 完全链接:两个集群之间的距离定义为每个集群中两点之间的最长距离。
  • 单链接:两个集群之间的距离定义为每个集群中两点之间的最短距离。此链接可用于检测数据集中的高值,这些值可能是异常值,因为它们将在最后合并。
  • 平均链接:两个聚类之间的距离定义为一个聚类中的每个点与另一个聚类中的每个点之间的平均距离。
  • Centroid-linkage:找到聚类1的质心和聚类2的质心,然后在合并前计算两者之间的距离。

不同的链接方法导致不同的集群。

3. 树状图

树状图是一种显示不同数据集之间的层次关系。正如已经说过的,树状图包含了层次聚类算法的记忆,因此只需查看树状图就可以知道聚类是如何形成的。

4. Code

import numpy as np
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt
# 生成随机数据
np.random.seed(0)
X = np.random.randn(15, 2)
# 计算距离矩阵
Z = linkage(X, 'ward')
# 绘制树形图
plt.figure(figsize=(10, 5))
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('Sample index')
plt.ylabel('Distance')
dendrogram(
    Z,
    leaf_rotation=90.,
    leaf_font_size=8.,
)
plt.show()

在这个示例中,我们首先使用NumPy生成了一个随机的二维数据集X,其中包含15个样本。然后,我们使用SciPy中的linkage函数计算距离矩阵Z,这里使用了“ward”方法来计算簇之间的距离。最后,我们使用Matplotlib来绘制树形图,其中leaf_rotation和leaf_font_size参数用于调整叶子节点的旋转角度和字体大小。

这个示例中生成的树形图显示了不同样本之间的距离,并且根据距离合并了不同的簇。可以通过树形图来确定最优的簇的数量,可以在图中找到最大距离的位置,然后画一条水平线,这个水平线和垂直线的交点就是最优的簇的数量。

以上就是python 层次聚类算法图文示例的详细内容,更多关于python 层次聚类算法的资料请关注脚本之家其它相关文章!

相关文章

  • python周期任务调度工具Schedule使用详解

    python周期任务调度工具Schedule使用详解

    这篇文章主要为大家介绍了python周期任务调度工具Schedule的使用及示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-11-11
  • IDEA创建python项目详细图文教程

    IDEA创建python项目详细图文教程

    在开始编写Python代码之前,需要在IDEA中配置Python环境,下面这篇文章主要给大家介绍了关于IDEA创建python项目的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • Requests什么的通通爬不了的Python超强反爬虫方案!

    Requests什么的通通爬不了的Python超强反爬虫方案!

    今天带大家学习Requests什么的通通爬不了的Python超强反爬虫方案,文中有非常详细的图文介绍及代码示例,对正在学习python的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-05-05
  • Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】

    Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】

    这篇文章主要介绍了Python 装饰器@,对函数进行功能扩展操作,结合实例形式分析了装饰器的相关使用技巧,以及开闭原则下的函数功能扩展,需要的朋友可以参考下
    2019-10-10
  • python3 pandas 读取MySQL数据和插入的实例

    python3 pandas 读取MySQL数据和插入的实例

    下面小编就为大家分享一篇python3 pandas 读取MySQL数据和插入的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python如何创建TCP服务端和客户端

    python如何创建TCP服务端和客户端

    这篇文章主要为大家详细介绍了python如何创建TCP服务端和客户端,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Python使用signal定时结束AsyncIOScheduler任务的问题

    Python使用signal定时结束AsyncIOScheduler任务的问题

    这篇文章主要介绍了Python使用signal定时结束AsyncIOScheduler任务,在使用aiohttp结合apscheduler的AsyncIOScheduler模拟定点并发的时候遇到两个问题,针对每个问题给大家详细介绍,需要的朋友可以参考下
    2021-07-07
  • Python利用open函数读写文件的示例详解

    Python利用open函数读写文件的示例详解

    在目前的环境中,读取文件应该算是最基本的操作了,python也内置了读写文件的函数,让我们来看下Python是如何利用open函数读写文件吧
    2023-04-04
  • 使用python-cv2实现Harr+Adaboost人脸识别的示例

    使用python-cv2实现Harr+Adaboost人脸识别的示例

    这篇文章主要介绍了使用python-cv2实现Harr+Adaboost人脸识别的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 用Python Turtle画棵樱花树送给自己

    用Python Turtle画棵樱花树送给自己

    心情不好的时候,来用Python和Turtle库画棵樱花树送给自己吧,自己也要好好爱自己才对!文中的示例代码讲解详细,感兴趣的小伙伴可以动手试一试
    2022-02-02

最新评论