机器学习——聚类算法-层次聚类算法

机器学习——聚类算法-层次聚类算法

在机器学习中,聚类是一种将数据集划分为具有相似特征的组或簇的无监督学习方法。聚类算法有许多种,其中一种常用的算法是层次聚类算法。本文将介绍聚类问题、层次聚类算法的原理、算法流程以及用Python实现层次聚类算法的示例。

聚类问题

聚类问题是指给定一个数据集,将其中的样本划分为若干组,使得同一组内的样本相似度高,而不同组之间的样本相似度低。聚类算法通常用于探索数据的内在结构,发现数据中的模式或隐藏的信息,以及进行数据的降维和预处理。

层次聚类算法

层次聚类是一种自下而上或自上而下的聚类方法,它不需要事先指定聚类的个数。层次聚类算法主要有两种形式:凝聚式(agglomerative)和分裂式(divisive)。在凝聚式层次聚类中,每个样本开始时被认为是一个独立的簇,然后逐渐合并为越来越大的簇,直到满足某个停止条件为止。而在分裂式层次聚类中,则是从一个包含所有样本的簇开始,逐渐分裂成越来越小的簇,直到每个簇都只包含一个样本为止。

层次聚类算法的原理

层次聚类算法的基本原理是通过计算样本之间的相似度(距离)来构建一个聚类树(树状图),从而得到样本之间的聚类关系。具体来说,层次聚类算法的步骤如下:

  1. 计算样本之间的距离: 首先,计算任意两个样本之间的距离或相似度。常用的距离度量包括欧氏距离、曼哈顿距离、余弦相似度等。

  2. 初始化聚类: 将每个样本初始化为一个簇。

  3. 合并最近的簇: 从距离矩阵中找到距离最近的两个簇,并将它们合并成一个新的簇。

  4. 更新距离矩阵: 更新距离矩阵,以反映新簇与其他簇之间的距离。

  5. 重复步骤3和步骤4,直到满足停止条件为止: 可以根据停止条件来决定何时停止合并簇,常见的停止条件包括簇的数量达到预设值、距离超过阈值等。

层次聚类算法的公式

层次聚类算法中常用的距离度量包括欧氏距离、曼哈顿距离、余弦相似度等。以欧氏距离为例,两个样本点 (x_i) 和 (x_j) 之间的欧氏距离可以表示为:

[
d(x_i, x_j) = \sqrt{\sum_{k=1}^{n}(x_{ik} - x_{jk})^2}
]

其中,(n) 是特征的数量。

Python实现层次聚类算法示例

下面是使用Python实现凝聚式层次聚类算法的示例代码:

from sklearn.datasets import load_iris
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt# 加载数据集
iris = load_iris()
X = iris.data# 计算距离矩阵
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()

在这里插入图片描述

这段代码使用了load_iris函数加载了鸢尾花数据集,并计算了样本之间的距离矩阵。然后,使用linkage函数构建了层次聚类树,最后通过dendrogram函数绘制了树状图,展示了样本之间的聚类关系。

总结

层次聚类算法是一种无需预先指定簇数的聚类方法,它通过计算样本之间的相似度来构建聚类树,从而得到样本之间的聚类关系。本文介绍了层次聚类算法的原理、步骤以及Python实现的示例代码。通过层次聚类算法,可以对数据集进行探索性分析,发现数据中的内在结构和模式。

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

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

相关文章

Matplotlib数据可视化实战-2绘制折线图(2)

2.11营业额可视化 已知某学校附近一个烧烤店2022年每个月的营业额如下图所示。编写程序绘制折线图对该烧烤店全年营业额进行可视化,使用红色点画线连接每个月的数据,并在每个月的数据处使用三角形进行标记。 烧烤店营业额 月份123456789101112营业额/万…

Claude 3被玩出自我意识了?AI社区轰动,我们买会员来了次实测

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了人工智能中文站 每天给大家更新可用的国内可用chatGPT资源​ 更多资源欢迎关注 ​ Anthropic 发布了新一代大模型系列 Claude 3,遥遥领先快一年之久的 GPT-4 终于迎来了强劲的对手。 ​ Claude 3 …

yolov8 pose keypoint解读

yolov8进行关键点检测的代码如下: from ultralytics import YOLO# Load a model model YOLO(yolov8n.pt) # pretrained YOLOv8n model# Run batched inference on a list of images results model([im1.jpg, im2.jpg]) # return a list of Results objects# Pr…

UE4_官方动画内容示例1.2_动画蓝图——使用蓝图告知Actor播放动画

展示了两个示例:在其中一个示例中,使用蓝图告知Actor播放动画,在另外一个示例中,展示了告知Actor播放动画的动画蓝图(例如,此示例展示了如何将变量从蓝图传递给动画蓝图,并演示了如何将现有姿势…

Wireshark使用相关

1.wireshark如何查看RST包 tcp.flags.reset1 RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。发送RST包关闭连接时,不必等缓冲区的包都发出去(不像上面的FIN包),直接就丢弃缓存区的包发送R…

PostgreSQL FDW(外部表) 简介

1、FDW: 外部表 背景 提供外部数据源的透明访问机制。PostgreSQL fdw(Foreign Data Wrapper)是一种外部访问接口,可以在PG数据库中创建外部表,用户访问的时候与访问本地表的方法一样,支持增删改查。 而数据则是存储在外部,外部可以是一个远程的pg数据库或者其他数据库(…

Excel 十字交叉聚光灯查询,再也不用担心看串行与列

当Excel表格行列较多时,要想跟条件找到目标数据可以用查找引用函数自动调取,如果又想让找出来的结果突出显示,有什么好办法呢? 先来看一个做好的案例效果,用户选择查询条件后,结果突出显示。 当查询条件变…

蓝桥题目集

1.关于你的欢迎语 这个题目要求修改bug 在未修改时是运行显示的是它的案例。 这里的想法采用模板字符串,将我们获取到的输入内容放入模板中进行替换。 首先就要通过id获取相关内容 再通过获取输出栏的id将我们用模板字符串拼接好的内容进行输出。 首先&#xff…

llama模型c语言推理@FreeBSD

llama中文名羊驼,Meta AI推出的一款大型语言模型,其性能在多个自然语言处理任务上表现优异是一个非常棒的自然语言生成模型。 llama.cpp是一个使用c语言推理llama的软件包,它支持FreeBSD、Linux等多种平台。 GitHub - ggerganov/llama.cpp:…

Web漏洞--WAF绕过+堆叠查询

Stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆 sql语句(多条)一起执行。而在真实的运用中也是这样的,我们知道在mysql 中,主要是命令行中,每一条语句结尾加;表示语句结束。这样我们就想到了是不是可以多句一起使用。这个叫做…

[论文精读]BrainVGAE: End-to-End Graph Neural Networks for Noisy fMRI Dataset

论文网址:BrainVGAE: End-to-End Graph Neural Networks for Noisy fMRI Dataset | IEEE Conference Publication | IEEE Xplore 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现…

【字节二面】SpringBoot可以同时处理多少请求

目录 一、示例代码二、那么springboot可以处理多少请求?三、maxConnections、maxThreads、acceptCount的关系 一、示例代码 RestController Slf4j public class RequestController {GetMapping("/test")public String test(HttpServletRequest request) …