当前位置: 首页 > news >正文

常见的五种聚类算法总结

常见的聚类算法总结

1. K-Means 聚类

描述

K-Means 是一种迭代优化的聚类算法,它通过最小化样本点到质心的距离平方和来进行聚类。

思想

  • 随机选择 K 个初始质心。
  • 分配每个数据点到最近的质心,形成 K 个簇。
  • 重新计算每个簇的质心。
  • 重复上述步骤,直到质心不再变化或达到最大迭代次数。

代码例子

from sklearn.cluster import KMeans
import numpy as np# 生成示例数据
X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]])# 定义 KMeans 模型
kmeans = KMeans(n_clusters=2, random_state=0)# 训练模型
kmeans.fit(X)# 获取聚类结果
labels = kmeans.labels_
centroids = kmeans.cluster_centers_print("聚类标签:", labels)
print("质心:", centroids)

2. 层次聚类 (Hierarchical Clustering)

描述

层次聚类是一种基于树状结构的聚类方法,分为自下而上(凝聚)和自上而下(分裂)两种。

思想

  • 自下而上:每个数据点开始为一个簇,不断合并最相似的簇,直到所有点合并为一个簇或达到预定的簇数。
  • 自上而下:开始时将所有数据点视为一个簇,不断拆分最不相似的簇,直到每个点为一个簇或达到预定的簇数。

代码例子

from sklearn.cluster import AgglomerativeClustering# 定义层次聚类模型
hierarchical = AgglomerativeClustering(n_clusters=2)# 训练模型
hierarchical.fit(X)# 获取聚类结果
labels = hierarchical.labels_print("聚类标签:", labels)

3. DBSCAN 聚类

描述

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,能够发现任意形状的簇,同时识别噪声点。

思想

  • 选择一个样本点,如果在其 ε 邻域内的点数不少于 minPts,则将这些点视为一个簇的核心点。
  • 将核心点邻域内的点添加到该簇中,重复这个过程,直到簇不再增长。
  • 标记未分配到任何簇的点为噪声点。

代码例子

from sklearn.cluster import DBSCAN# 定义 DBSCAN 模型
dbscan = DBSCAN(eps=3, min_samples=2)# 生成示例数据
X = np.array([[1, 2], [2, 2], [2, 3],[8, 7], [8, 8], [25, 80]])# 训练模型
dbscan.fit(X)# 获取聚类结果
labels = dbscan.labels_print("聚类标签:", labels)

4. 均值漂移 (Mean Shift) 聚类

描述

均值漂移是一种基于密度的聚类算法,通过不断移动数据点到高密度区域的中心,找到簇的质心。

思想

  • 对每个点,计算其在一定窗口(带宽)内的密度中心,将点移动到密度中心。
  • 重复上述过程,直到所有点都在其密度中心。
  • 将密度中心附近的点合并为一个簇。

代码例子

from sklearn.cluster import MeanShift
import numpy as np# 生成示例数据
X = np.array([[1, 2], [2, 2], [2, 3],[8, 7], [8, 8], [25, 80]])# 定义均值漂移模型
meanshift = MeanShift(bandwidth=2)# 训练模型
meanshift.fit(X)# 获取聚类结果
labels = meanshift.labels_
centroids = meanshift.cluster_centers_print("聚类标签:", labels)
print("质心:", centroids)

5. 高斯混合模型 (Gaussian Mixture Model, GMM)

描述

高斯混合模型是一种基于概率模型的聚类方法,假设数据由多个高斯分布组成,通过期望最大化(EM)算法估计参数。

思想

  • 初始化每个高斯分布的参数。
  • E步:计算每个样本属于每个高斯分布的概率。
  • M步:根据概率更新高斯分布的参数。
  • 重复上述过程,直到参数收敛。

代码例子

from sklearn.mixture import GaussianMixture
import numpy as np# 生成示例数据
X = np.array([[1, 2], [2, 2], [2, 3],[8, 7], [8, 8], [25, 80]])# 定义高斯混合模型
gmm = GaussianMixture(n_components=2, random_state=0)# 训练模型
gmm.fit(X)# 获取聚类结果
labels = gmm.predict(X)
centroids = gmm.means_print("聚类标签:", labels)
print("质心:", centroids)
http://www.lryc.cn/news/401177.html

相关文章:

  • 智能车存在网络安全隐患,如何应设计出更好的安全防护技术?
  • 通讯的概念
  • Centos7 rpm 安装 Mysql 8.0.28
  • Linux 多进程编程详解
  • C语言之大小端理解
  • GIT相关操作,推送本地分支到远程仓库流程记录学习
  • 网络协议 — Keepalived 高可用方案
  • 前端报错adding CSS “touch-action: none“ to this element解决方案
  • 使用phpMyAdmin操作MYSQL(四)
  • webpack配置代理请求
  • 热门软件缺陷管理工具2024:专业评测与建议
  • 冒泡,选择,插入,希尔排序
  • 【HarmonyOS学习】Calendar Kit日历管理
  • RDMA 高性能架构基本原理与设计方案
  • 【Springboot】事件机制发布与订阅的使用实践
  • 新版网页无插件H.265播放器EasyPlayer.js如何测试demo视频?
  • PXE、Kickstart和cobbler
  • 【GameFramework扩展应用】6-3、GameFramework框架增加日志保存功能
  • 将独热码应用到神经网络中
  • 在CSS中,使用Flexbox布局时,可以通过几个属性来控制容器内的项目之间的间距
  • 关于HDFS 和HBase
  • 【HarmonyOS】HarmonyOS NEXT学习日记:二、ArkTs语法
  • Web前端-Web开发CSS基础2-选择器
  • Mongodb数组字段索引之多键索引
  • [Spring] Spring Web MVC案例实战
  • 大模型“重构”教育:解构学习奥秘,推动教育普惠
  • HCNA VRP基础
  • 单片机外围设备-EEPROM
  • YOLO--置信度(超详细解读)
  • “解锁物流新纪元:深入探索‘沂路畅通‘分布式协作平台“