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

news/2024/5/20 6:23:14 标签: 机器学习, 算法, 聚类

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

机器学习中,聚类是一种将数据集划分为具有相似特征的组或簇的无监督学习方法。聚类算法有许多种,其中一种常用的算法是层次聚类算法。本文将介绍聚类问题、层次聚类算法的原理、算法流程以及用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.niftyadmin.cn/n/5455632.html

相关文章

加密、解密、签名、验签之RSA的原理及方法 , 使倒推法来捋

先补个大家都容易忽略的常识: 公钥加密、私钥解密、私钥签名、公钥验签。 一、RSA加密简介 RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥…

python快速入门一

变量 定义一个变量并打印到控制台 message "Hello World!" print(message)控制台输出 Hello World!修改变量 message "Hello World!" print(message) message "Hello Python World!" print(message)控制台输出 Hello World! Hello Pytho…

Linux 系统基础操作命令

当前市面上常见的系统:Windows、Linux、Mac OS、Android、IOS…… Linux 不太适合日常使用,但是非常适合用于开发。因此作为一个程序猿来说,Linux 都是务必要掌握的。 Linux 介绍 Linux 发行版 目前市面上比较知名的发行版有:R…

45.跳跃游戏||

// 定义一个名为Solution的类 class Solution {// 定义一个public方法jump,输入参数为一个整数数组nums,返回值类型为整数public int jump(int[] nums) {// 初始化跳跃次数结果变量为0int result 0;// 初始化当前覆盖的最远距离下标为0int end 0;// 初…

116道网络安全面试题目总结

1、Burpsuite常用的功能是什么? 2、reverse_tcp和bind_tcp的区别? 3、拿到一个待检测的站或给你一个网站,你觉得应该先做什么? 4、你在渗透测试过程中是如何敏感信息收集的? 5、你平时去哪些网站进行学习、挖漏洞提…

maya安装笔记

目录 linux系统安装 linux系统安装 2020 Ubuntu安装maya2020全过程以及遇到的问题_ubuntu maya安装包-CSDN博客 下载地址: https://up.autodesk.com/2020/MAYA/18BBDBD5-9A15-4095-8D5E-089938EB8E24/Autodesk_Maya_2020_1_ML_Linux_64bit.tgz 参考&#xff1a…

蓝桥杯刷题-day5-动态规划

文章目录 使用最小花费爬楼梯解码方法 使用最小花费爬楼梯 【题目描述】 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶…

贪吃蛇挖矿变种分析

贪吃蛇挖矿变种样本分析 TQ sha256:5671393fa023e67e323e8a4329c3f501172f481ee205cf0d0a9425643b6ea7e4 md5:8296e188b3d8d564c388343aa7750148 创建进程执行MSSHQL.exe,判断是否是管理员权限。 管理员权限:内置的PE释放到同路径下,名称…