常用数据聚类算法总结记录

news2024/11/18 21:35:48

本文的主要目的是总结记录日常学习工作中常用到的一些数据聚类算法,对其原理简单总结记录,同时分析对应的优缺点,以后需要的时候可以直接翻看,避免每次都要查询浪费时间,欢迎补充。

 聚类算法是一种无监督学习的方法,用于将数据集中的样本按照某种相似度或距离度量进行分组。以下是一些常见的聚类算法:

  1. K-means聚类算法:将数据集划分为K个聚类,每个聚类以其质心(centroid)为代表。通过迭代优化,将样本点分配给与其最近的质心,然后更新质心位置,直到达到收敛条件。

  2. 层次聚类算法(Hierarchical Clustering):基于样本间的相似性或距离,逐渐构建出一个层次结构的聚类结果。分为凝聚聚类(Agglomerative Clustering)和分裂聚类(Divisive Clustering)两种方法。

  3. DBSCAN聚类算法:基于密度的聚类算法,可以识别出具有足够样本密度的区域,并将其作为一个簇。可以自动发现任意形状的聚类。

  4. 高斯混合模型(GMM)聚类算法:假设数据由多个高斯分布组成,通过估计每个分布的参数,将样本分配给对应的分布,从而实现聚类。

  5. 密度峰值聚类(Density Peak Clustering):通过寻找样本点的局部密度和相对于其他样本点的距离,找出具有较高密度的样本点作为聚类中心。

  6. 均值漂移(Mean Shift)聚类算法:通过不断迭代,将样本点向密度最大的方向移动,从而找到聚类中心。

  7. 谱聚类(Spectral Clustering)算法:根据数据的相似性构建相似度矩阵,并将其转换为拉普拉斯矩阵,最后通过对拉普拉斯矩阵进行特征分解来实现聚类。

这些聚类算法在不同的场景和数据集上有各自的优势和适用性。选择合适的聚类算法需要考虑数据特点、聚类目标以及算法的复杂度和可扩展性。

当数据没有明确的标签信息时,聚类算法可以帮助我们发现数据中的潜在结构和模式。以下是对每种聚类算法的详细介绍,包括算法原理、优点和缺点:

(1)K-means聚类算法:
算法原理:
K-means聚类将数据集划分为K个聚类,并通过迭代优化来不断更新聚类中心。算法的步骤包括初始化K个聚类中心、计算样本与聚类中心的距离、将样本分配给最近的聚类中心、更新聚类中心位置并重复以上步骤直到收敛。
优点:
简单且易于实现,计算效率高;对于大型数据集具有较好的可扩展性;适用于凸型或球状聚类结构的数据。
缺点:
需要事先指定聚类数目K;对于不同形状、密度不均匀的聚类结构效果可能较差。

代码实现如下:

# Load the iris dataset
iris = load_iris()
X = iris.data

# K-means clustering
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
kmeans_labels = kmeans.labels_


(2)层次聚类算法(Hierarchical Clustering):
算法原理:
层次聚类根据样本间的相似度或距离逐渐构建出一个层次结构的聚类结果。凝聚聚类从每个样本开始,逐步合并最相似的样本,直到形成一个大聚类;分裂聚类从包含所有样本的大聚类开始,逐步将其分解为更小的子聚类。
优点:
无需指定聚类数目;结果呈现层次结构,可以通过截取树状图来获得不同聚类数目的结果;适用于多种聚类结构。
缺点:
计算复杂度较高,特别是对于大规模数据集;对于噪声和孤立点敏感。

代码实现如下:

# Load the iris dataset
iris = load_iris()
X = iris.data

# Hierarchical clustering
hierarchical = AgglomerativeClustering(n_clusters=3)
hierarchical_labels = hierarchical.fit_predict(X)


(3)DBSCAN聚类算法:
算法原理:
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)基于密度的聚类算法,通过确定样本周围的邻近样本密度来划分聚类。核心样本是周围距离内至少包含MinPts个样本的样本,密度可达样本是通过核心样本密度凸包连通得到的样本。
优点:
能够自动发现任意形状的聚类,对于密度不均匀的聚类结构效果好;对噪声和孤立点具有鲁棒性。
缺点:
对于样本密度差异较大的数据集,需要事先调节参数;不适用于高维数据,容易受到维度灾难的影响。

代码实现如下:

# Load the iris dataset
iris = load_iris()
X = iris.data

# DBSCAN clustering
dbscan = DBSCAN(eps=0.5, min_samples=5)
dbscan_labels = dbscan.fit_predict(X)


(4)高斯混合模型(GMM)聚类算法:
算法原理:
高斯混合模型假设数据由多个高斯分布组成,通过估计每个分布的参数,将样本分配给对应的分布。可以使用EM算法进行参数估计。
优点:
能够模拟复杂的数据分布,适用于非凸型、椭圆形状的聚类;对于数据集中存在的噪声和异常值具有较好的鲁棒性。
缺点:
对于大规模数据集计算复杂度较高;需要事先指定高斯分布数目。

代码实现如下:

# Load the iris dataset
iris = load_iris()
X = iris.data


# Gaussian Mixture Model (GMM) clustering
gmm = GaussianMixture(n_components=3)
gmm.fit(X)
gmm_labels = gmm.predict(X)


(5)密度峰值聚类(Density Peak Clustering):
算法原理:
密度峰值聚类是一种基于样本点的密度和相对距离的聚类方法。其原理如下:
首先,计算每个样本点的局部密度,表示该样本周围的样本数量或密度。
然后,计算每个样本点与其他样本点的最小距离(距离可以使用欧氏距离等度量)。
根据局部密度和最小距离确定每个样本点的密度峰值,并将具有较高局部密度和较远最小距离的样本点作为聚类中心。
最后,将其他样本分配给距离最近的密度峰值所在的簇。
密度峰值聚类的优点和缺点如下:
优点:
能够发现任意形状和大小的聚类,不受密度均匀性的限制。
对噪声和离群点具有较好的鲁棒性,能够识别出没有明显密度峰值的数据。
不需要预先指定聚类数目,自动确定聚类中心。
缺点:
当数据集存在多个密度峰值且密度相似时,聚类结果可能不稳定。
对参数的选择比较敏感,如设置最小距离阈值等。
在处理大规模数据集时,计算样本点之间的距离和局部密度较为耗时。

代码实现如下:

# Load the iris dataset
iris = load_iris()
X = iris.data

# Density Peak Clustering
# You may need to install the density_peaks package first:
# pip install density-peaks-clustering
from density_peaks import density_peaks
dp = density_peaks.DensityPeaks(n_clusters=3)
dp.fit(X)
dp_labels = dp.labels_

(6)均值漂移(Mean Shift)聚类算法:
算法原理:
均值漂移聚类算法通过不断迭代,将样本点向密度最大的方向移动,从而找到聚类中心。具体步骤如下:
初始化每个样本点的位置作为当前估计的聚类中心。
对于每个样本点,计算其周围样本的平均位置(均值漂移向量),并将样本点向该位置移动。
重复步骤2,直到达到收敛条件或迭代次数限制。
优点:
不需要事先指定聚类数目,能够自适应地确定聚类中心的数量。
能够处理任意形状和大小的聚类,对噪声和离群点具有较好的鲁棒性。
相比于K-means等方法,对于非球状的聚类结构效果更好。
缺点:
运行时间较长,特别是在处理大规模数据集时,由于每个样本都需要计算均值漂移向量。
对于高维数据,由于维数灾难的影响,可能出现聚类效果不佳。
对于具有多个密度峰值且密度相似的数据集,聚类结果可能不稳定。

代码实现如下:

# Load the iris dataset
iris = load_iris()
X = iris.data

# Mean Shift clustering
mean_shift = MeanShift()
mean_shift_labels = mean_shift.fit_predict(X)


(7)谱聚类(Spectral Clustering)算法:
算法原理:
谱聚类算法根据数据的相似性构建相似度矩阵,并将其转换为拉普拉斯矩阵。然后,通过对拉普拉斯矩阵进行特征分解来实现聚类。
构建相似度矩阵:通常使用高斯核函数计算样本之间的相似度,或者使用K近邻方法选择最近的样本作为相似样本。
转换为拉普拉斯矩阵:根据相似矩阵构建拉普拉斯矩阵,可以使用标准化的拉普拉斯矩阵或对称标准化的拉普拉斯矩阵。
特征分解:对拉普拉斯矩阵进行特征分解,得到特征向量,并使用K-means等聚类方法对特征向量进行聚类。
优点:
可以处理非凸形状和大小不同的聚类,适用于任意形状的数据分布。
相比于K-means等传统方法,对于图像分割、社交网络等具有复杂关系的数据集效果更好。
不需要预先指定聚类数目,能够自适应地确定聚类数量。
缺点:
对于大规模数据集,计算相似度矩阵和特征分解的计算复杂度较高。
需要事先调节参数,如相似度阈值、K近邻数目等。
对于高维数据,可能出现"维度灾难"问题,聚类效果不佳。
代码实现如下所示:

# Load the iris dataset
iris = load_iris()
X = iris.data

# Spectral clustering
spectral = SpectralClustering(n_clusters=3)
spectral_labels = spectral.fit_predict(X)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker安装 Nginx

相关文章: Docker容器之间的连接和通信(四)_做测试的喵酱的博客-CSDN博客 一、 Docker安装 Nginx 1.1、查看可用的 Nginx 版本 docker search nginx 1.2、安装最新 Nginx 版本 docker pull nginx:latest 1.3 查看本地镜像 docker images 1.4 运行容器 运行…

架构-新教材补充内容

系统工程 两分,需要计算的选择题 #mermaid-svg-opoH5AvD05BTqVHp {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-opoH5AvD05BTqVHp .error-icon{fill:#552222;}#mermaid-svg-opoH5AvD05BTqVHp .error-te…

关系型数据库全栈入选唯一厂商!GBASE南大通用的“可信”时刻

作为国产数据库的领军企业,业界公认的“可信”力量,GBASE南大通用深度参与大会,与各协会领导、学术大咖、技术领军共同论道我国数据库自立自强之路。 现在让我们一起盘点为期两天的议程中GBASE南大通用的“高光”时刻,且看GBASE是…

7.7工作总结

一、前言:这周三领导让我修改一个入库接口,需要加入三个参数,我直接把相应的数据加进去了忽略了这个参数是放在一个List中的同时还需要转成json的形式。因此我又修改了一遍。 二、错误的形式: 在接口文档中是这样的形式&#xff…

最新版Flink CDC MySQL同步Elasticsearch(一)

1.环境准备 首先我们要基于Flink CDC MySQL同步MySQL的环境基础上(flink-1.17.1、Java8、MySQL8)搭建Elasticsearch7-17-10和Kibana 7.17.10。笔者已经搭建好环境,这里不做具体演示了,如果需要Es的搭建教程情况笔者其他博客 注意…

【案例教程】GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例实践实践技术

随着航空、航天、近地空间等多个遥感平台的不断发展,近年来遥感技术突飞猛进。由此,遥感数据的空间、时间、光谱分辨率不断提高,数据量也大幅增长,使其越来越具有大数据特征。对于相关研究而言,遥感大数据的出现为其提…

海格里斯HEGERLS智能四向穿梭车系统是如何赋能企业降本增效的?

随着人工智能和物联网等新技术的更新迭代,物流行业数字化,智能仓储已成趋势。我国智能仓储在“互联网”战略的带动下快速发展,与大数据、云计算等新一代互联网技术深度融合,智能仓储整个行业向着运行高效、便捷、低成本的方向迈进…

Vision Transformer推理中线性-角度注意转换压缩自注意

文章目录 Castling-ViT: Compressing Self-Attention via Switching Towards Linear-Angular Attention at Vision Transformer Inference摘要本文方法实验结果 Castling-ViT: Compressing Self-Attention via Switching Towards Linear-Angular Attention at Vision Transform…

Angular 调试工具(Augury)

目录 1、简介 2、检验代码 3、Angury 本地构建和安装 3.1 添加到Chrome 浏览器: 3.2 添加到Firefox浏览器 4、项目中对应的Npm脚本 5、Augury 三大主要功能 5.1 组件树(Component Tree) 5.1.1 Component Tree 5.2 路由树&#xff0…

HarmonyOS学习路之开发篇—数据管理(对象关系映射数据库)

HarmonyOS对象关系映射(Object Relational Mapping,ORM)数据库是一款基于SQLite的数据库框架,屏蔽了底层SQLite数据库的SQL操作,针对实体和关系提供了增删改查等一系列的面向对象接口。应用开发者不必再去编写复杂的SQ…

港联证券|如何区分大盘股和小盘股?

1、依据个股的市值来区别。一般来说,大盘股:流转市值在500亿及以上,小盘股:流转市值一般在50亿及以下,市值在二者之间的被称为中盘股。 2、依据流转股本区别。一般来说,大盘股:流转股本大于5亿&…

mysql重点复习

1.MySQL如何对用户smart授权访问,密码为123456。 2.授权用户tom可以在网络中的192.168.4.254主机登录,仅对对userdb库下的user表有查看记录、更新name字段的权限 , 登录密码userweb888。 GRANT SELECT,UPDATE(name) ON userdb.user TO tom192…

零拷贝小结

零拷贝(Zero-copy)是一种优化技术,用于减少数据传输过程中的拷贝操作,从而提高系统性能和效率。在传统的数据传输中,涉及多个缓冲区之间的数据拷贝操作(例如从磁盘到内存的拷贝、内存到网络缓冲区的拷贝等&…

gitlab ci/cd+harbor+k8s实现一键部署(python项目)

大致架构: gitlab变量 使用 kaniko 构建 Docker 镜像 .gitlab-ci.yml stages:- test- build- deployvariables:DOCKERFILE: "Dockerfile2"CONTAINER_IMAGE: "archeros/workspace/platform"GIT_SSL_NO_VERIFY: "true"before_script…

canvas.js、node-canvas的坑

一、依赖下载后半天没 install 完,最后还报错, \node_modules\canvas: Command failed. Exit code: 1 Command: node-pre-gyp install --fallback-to-build Arguments: 解决方法:官方: Installation: Windows Automattic/node-ca…

ArcGis如何通过Python进行插件开发?

文章目录 0.引言1.准备Python加载项工具2.创建一个加载项工具3.编写代码4.生成安装文件5.安装和调出加载项6.使用加载项 0.引言 ArcGIS 插件(Add-ins)可以让用户更加容易的自定义和扩展ArcGIS Desktop应用程序,它创建一系列自定义工具提供了一…

Linux基础_3

一、Linux安全模型 资源分派: Authentication: 认证:验证用户身份Authorization: 授权:不同的用户设置不同权限Accouting|Audition: 审计 当用户成功登录时,系统会自动分配令牌token,包括:用户标识…

从CPU缓存结构到原子操作

文章目录 一、CPU缓存结构1.1 CPU的多级缓存1.2 Cache Line 二、写回策略三、缓存一致性问题及解决方案3.1 缓存一致性问题3.2 解决方案3.2.1 总线嗅探3.2.2 事务的串行化3.2.3 MESI 四、原子操作4.1 什么是原子操作4.2 c 标准库的原子类型4.2.1 atomic<T\>4.2.2 is_lock…

软件安全测试流程与方法分享(上)

安全测试是在IT软件产品的生命周期中&#xff0c;特别是产品开发基本完成到发布阶段&#xff0c;对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。安全是软件产品的一个重要特性&#xff0c;安全测试也是软件测试重的一个重要类别&#xff0c;本系列文章我们与…

MySQL简单查询操作

系列文章目录 前言SELECT子句SELECT后面之间跟列名DISTINCT,ALL列表达式列更名 WHERE子句WHERE子句中可以使用的查询条件比较运算特殊比较运算符BETWEEN...AND...集合查询&#xff1a;IN模糊查询&#xff1a;LIKE空值比较&#xff1a;IS NULL 多重条件查询 ORDER BY子句排序复杂…