【理解机器学习算法】之Clustering算法(Agglomerative Clustering)

聚合聚类(Agglomerative Clustering)是一种层次聚类算法,通过逐步合并或“聚集”它们来构建嵌套聚类。这种方法采用自底向上的方式构建聚类层次:它从将每个数据点作为单个聚类开始,然后迭代合并最接近的聚类对,直到所有数据点合并为一个聚类,或直到达到指定的聚类数量。以下是更详细的概述:

聚合聚类的工作原理

  1. 初始化:开始时,将每个数据点视为一个单独的聚类。因此,如果你有N个数据点,你最初会有N个聚类。
  2. 相似性度量:选择一个度量标准来衡量聚类之间的距离(例如,对于空间中的点使用欧几里得距离,但根据数据的性质可以使用其他距离)。
  3. 连接准则:选择一个连接准则,这决定了作为观测对之间距离的函数的聚类集合之间的距离。常见的连接准则包括:
    1. 最短连接:两个聚类之间的距离定义为一个聚类中任何成员到另一个聚类中任何成员的最短距离。
    2. 最长连接:两个聚类之间的距离定义为一个聚类中任何成员到另一个聚类中任何成员的最长距离。
    3. 平均连接:两个聚类之间的距离定义为一个聚类中每个成员到另一个聚类中每个成员的平均距离。
    4. Ward方法:两个聚类之间的距离通过两个聚类合并后总体内聚类方差增加量来定义。
  4. 迭代合并:在每一步中,根据所选的距离和连接准则,找到最接近的聚类对并将它们合并为一个单独的聚类。更新存储聚类之间距离的距离矩阵。
  5. 终止:重复迭代合并,直到所有数据点合并为一个聚类或达到停止准则(例如,期望的聚类数量)。

优点和缺点

优点:
  - 聚合聚类在距离和连接准则的选择上具有多样性,使其适用于各种数据集。
  - 它产生了一个层次结构,这对于不同规模的聚类数据结构是有信息量的。

-缺点:
  - 对于大数据集来说,它可能计算成本高,因为它需要在每次迭代中计算和更新所有聚类对之间的距离。
  - 算法的结果可能对距离和连接准则的选择敏感。

应用
聚合聚类在广泛的应用领域中被使用,包括:
- 生物学:用于构建系统发育树。
- 文档和文本挖掘:用于对相似文档进行分组或在语料库中找到主题。
- 图像分析:用于分割图像中的相似区域。
- 客户细分:基于购买行为或偏好识别客户数据中的不同组。

聚合聚类是一种强大的工具,用于探索和理解复杂数据集内的结构,通过揭示数据的

要在Python中实现聚合聚类,您可以使用scikit-learn库的AgglomerativeClustering类。此示例演示了如何将聚合聚类应用于合成数据集:

from sklearn.datasets import make_blobs
from sklearn.cluster import AgglomerativeClustering
import matplotlib.pyplot as plt# 生成一个合成数据集
X, _ = make_blobs(n_samples=150, centers=4, cluster_std=1.0, random_state=42)# 实例化并拟合聚合聚类模型
# n_clusters指定要找到的聚类数量
# linkage='ward'表示算法将最小化被合并的聚类的方差
agg_clustering = AgglomerativeClustering(n_clusters=4, affinity='euclidean', linkage='ward')
cluster_assignment = agg_clustering.fit_predict(X)# 绘制聚类
plt.scatter(X[:, 0], X[:, 1], c=cluster_assignment, cmap='rainbow')
plt.title('聚合聚类')
plt.xlabel('特征1')
plt.ylabel('特征2')
plt.show()

它是如何工作的:

  • 使用make_blobs生成一组合成的数据点,这些数据点分布在几个“blob”中。这是我们要聚类的数据集。
  • 使用所需的聚类数量(n_clusters=4)和要使用的链接类型实例化AgglomerativeClustering。在这种情况下,使用的是linkage='ward',它最小化了被合并的聚类的方差。
  • 在数据集上调用fit_predict方法来执行聚类。此方法返回每个数据点的聚类标签。
  • 最后,用表示其聚类分配的颜色绘制数据点。这种可视化有助于理解数据点在算法创建的不同聚类之间的分布。

Dendograms树状图解释

树状图是显示对象之间层次关系的图表。它通常用于描绘由层次聚类产生的聚类排列。树状图通过在非单一聚类及其子聚类之间绘制U型链接来说明每个聚类是如何组成的。U型链接的高度指示了联合聚类之间的距离(或不相似性)。当您向上移动树状图时,聚类之间的不相似性变得更大。在聚合聚类的上下文中,树状图提供了聚类过程的视觉总结,显示了聚类合并的顺序以及每次合并发生的距离。

现在,让我们编写代码,对一个示例数据集执行聚合聚类,然后用树状图可视化层次聚类:

import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
from sklearn.datasets import make_blobs# 生成一个样本数据集
X, labels_true = make_blobs(n_samples=50, centers=3, cluster_std=0.60, random_state=0)# 执行层次/聚合聚类
Z = linkage(X, 'ward')  # 'ward'连接方式最小化合并的聚类的方差# 绘制树状图
plt.figure(figsize=(10, 7))
plt.title("聚合聚类树状图")
plt.xlabel("样本索引")
plt.ylabel("距离")
dendrogram(Z, leaf_rotation=90., leaf_font_size=8.,)
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/286610.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决BladeX微服务Swagger资源未授权访问漏洞

1.问题描述 客户线上环境,第三方进行安全检测时候,反馈来一个"Spring"接口未授权访问漏洞。如图: 2.后端框架 服务平台后端采用开源框架BladeX微服务版本。BladeX 是由一个商业级项目升级优化而来的SpringCloud微服务架构,采用Java8 API重构了业务代码,完全遵…

略带个性化的B端界面,非框架生成的。

B端系统(即面向企业或机构的系统)使用框架搭建页面具有以下优势和劣势: 优势: 提高开发效率:框架提供了一套已经定义好的标准和组件,可以大大减少开发人员的工作量和开发时间。开发人员可以专注于业务逻辑…

人工智能在产业中应用

一、从人工智能说起 (一) 关联关系发现 1. 推荐匹配 在信息爆炸的时代,我们每天都面临着信息的轰炸,无数电影、歌曲、帖子、商品呈现在我们的眼前。海量内容虽然丰富多彩,但同时也让我们感到目不暇接、应接不暇。就在这时,有一…

每日一题 --- 数组中的第 K 个最大元素[力扣][Go]

数组中的第 K 个最大元素 题目:数组中的第 K 个最大元素 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1…

蓝桥杯练习题总结(二)dfs题、飞机降落、全球变暖

目录 一、飞机降落 二、全球变暖 初始化和输入 确定岛屿 DFS搜索判断岛屿是否会被淹没 计算被淹没的岛屿数量 三、军训排队 一、飞机降落 问题描述: N架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 时刻到达机场上空,到达时它的剩余…

qrcode插件-生成二维码

安装 yarn add qrcodejs2 --save npm install qrcodejs2 --save 使用 <template><div><div id"qrcodeImg"></div><!-- 创建一个div&#xff0c;并设置id --></div> </template> <script> import QRCode from q…

一篇文章,告别Flutter状态管理争论,问题和解决

起因 每隔一段时间&#xff0c;都会出现一个新的状态管理框架&#xff0c;最近在YouTube上也发现了有人在推signals, 一个起源于React的状态管理框架&#xff0c;人们总是乐此不疲的发明各种好用或者为了解决特定问题而产生的方案&#xff0c;比如Bloc, 工具会推陈出新&#x…

AI基础知识扫盲

AI基础知识扫盲 AIGCLangchain--LangGraph | 新手入门RAG&#xff08;Retrieval-Augmented Generation&#xff09;检索增强生成fastGPT AIGC AIGC是一种新的人工智能技术&#xff0c;它的全称是Artificial Intelligence Generative Content&#xff0c;即人工智能生成内容。 …

关于SpringMVC返回JSON中时间对象序列化的问题

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 首先要说明一点,SpringMVC进行JSON序列化处理时,使用的工具包是Jackson…

PointNet++论文复现(一)【PontNet网络模型代码详解 - 分类部分】

PontNet网络模型代码详解 - 分类部分 专栏持续更新中!关注博主查看后续部分! 分类模型的训练: ## e.g., pointnet2_ssg without normal features python train_classification.py --model pointnet2_cls_ssg --log_dir pointnet2_cls_ssg python test_classification.py…

云电脑火爆出圈,如何选择和使用?--腾讯云、ToDesk云电脑、青椒云使用评测和攻略

前言&#xff1a; Hello大家好&#xff0c;我是Dream。在当下&#xff0c;科技的飞速发展已经深入影响着我们的日常生活&#xff0c;特别是随着物联网的兴起和5G网络的普及&#xff0c;云计算作为一个重要的技术概念也逐渐走进了我们的视野。云计算早已不再是一个陌生的名词&am…

Mysql配置autocommit实际使用(慎用)

以下内容都是基于MySQL5.7。所有操作建议在MySQL客户端执行。navicat可能会先意想不到的问题 在导入频繁执行update、insert的时候&#xff0c;可以考虑关闭MySQL的自动提交 首先查询当前的状态 1开启 0关闭 select autocommit;设置本次连接关闭自动提交(如果需要永久关闭请修…

MySQL的安装

第一步 先下载MySQL 的压缩包 官网链接: 点击跳转MySQL官网 或者直接下载我所上传的压缩包MySQL8.0.20X64 第二步 将下载的文件解压&#xff0c;我的解压位置为E:\Program Files目录&#xff0c;大家可以根据自己的需求解压到不同位置。如下图 第三步 进入到E:\Program Files…

导演、音乐家、艺术家眼中的Sora第一印象

自从2月16日Sora发布的那个夜晚以来&#xff0c;多少人都在翘首以盼&#xff0c;期待能真正的用上Sora。但是OpenAI自己也懂&#xff0c;基于模型对齐问题、安全问题、推理算力问题等等&#xff0c;这玩意短期内&#xff0c;基本不可能放出来给大众用。当然了&#xff0c;等以后…

【Linux】进程的基本概念(进程控制块,ps命令,top命令查看进程)

目录 01.进程的基本概念 程序与进程 进程的属性 02.进程控制块&#xff08;PCB&#xff09; task_struct的内容分类 组织进程 03.查看进程 ps命令 top指令 在计算机科学领域&#xff0c;进程是一项关键概念&#xff0c;它是程序执行的一个实例&#xff0c;是操作系统的…

如何保证缓存与数据库的双写一致性?

如何保证缓存与数据库的双写一致性&#xff1f; 概述同步策略更新缓存还是删除缓存&#xff1a;先操作数据库还是缓存&#xff1a;案例一、先删除缓存&#xff0c;在更新数据库案例二 先操作数据库&#xff0c;再删除缓存 延时双删策略&#xff08;不推荐&#xff09;使用分布式…

《数据安全技术 数据分类分级规则》及典型行业标准指南要点提炼

数据分类分级发布新国标 千呼万唤&#xff0c;国家标准GB/T 43697-2024《数据安全技术 数据分类分级规则》于3月21日正式发布。作为全国网络安全标准化技术委员会更名后&#xff0c;发布的第一部以“数据安全技术”命名的国家标准&#xff0c;《数据安全技术 数据分类分级规则…

K8s+Nacos实现应用的优雅上下线【生产实践】

文章目录 前言一、环境描述二、模拟请求报错三、配置优雅上下线1.修改nacos配置2.修改depolyment配置3.重新apply deployment后测试4.整体(下单)测试流程验证是否生效 四、期间遇到的问题 前言 我们在使用k8s部署应用的时候&#xff0c;虽然k8s是使用滚动升级的&#xff0c;先…

【CXL协议-事务层之CXL.cache (3)】

3.2 CXL.cache 3.2.1 概述 CXL.cache 协议将设备和主机之间的交互定义为许多请求&#xff0c;每个请求至少有一个关联的响应消息&#xff0c;有时还有数据传输。 该接口由每个方向的三个通道组成&#xff1a; 请求、响应和数据。 这些通道根据其方向命名&#xff0c;D2H&…

【笔记】深入理解JVM机制

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f4d5;格言&#xff1a;吾愚多不敏&#xff0c;而愿加学欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 JVM 运⾏流程图 JVM 中内存区域划分 方法区 / 元数据区 堆 栈 程序计数器 本地方法栈 内存区域总结 JVM 中类加载过程 …