聚类算法(K-means、DBSCAN)

聚类算法

K-means 算法

算法原理

K-means 是一种基于类内距离最小化的划分式聚类算法,其核心思想是通过迭代优化将数据划分为 K 个簇。目标函数为最小化平方误差(SSE):
S S E = ∑ i = 1 K ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 SSE = \sum_{i=1}^{K} \sum_{x \in C_i} ||x - \mu_i||^2 SSE=i=1KxCi∣∣xμi2
其中 μ i \mu_i μi 是第 i i i 个簇的质心。

算法步骤

  1. 初始化

    • 随机选择 K 个初始质心(或使用 k-means++ 优化初始化)
  2. 迭代优化

    • 分配阶段:将每个样本分配到距离最近的质心所属簇
      C i = { x : ∣ ∣ x − μ i ∣ ∣ 2 ≤ ∣ ∣ x − μ j ∣ ∣ 2 , ∀ j } C_i = \{ x : ||x - \mu_i||^2 \leq ||x - \mu_j||^2, \forall j \} Ci={x:∣∣xμi2∣∣xμj2,j}
    • 更新阶段:重新计算每个簇的质心
      μ i = 1 ∣ C i ∣ ∑ x ∈ C i x \mu_i = \frac{1}{|C_i|} \sum_{x \in C_i} x μi=Ci1xCix
  3. 终止条件

    • 质心位置不再变化(收敛)
    • 达到最大迭代次数
    • SSE 变化量小于阈值

特点

  • 时间复杂度: O ( n ∗ K ∗ I ∗ d ) O(n*K*I*d) O(nKId),n 为样本数,I 为迭代次数
  • 需预先指定 K 值
  • 对初始质心敏感,可能收敛到局部最优

DBSCAN 算法

算法原理

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度可达性的聚类算法,由Ester等人在1996年提出,其核心思想是通过数据点的局部密度分布识别聚类结构,并有效处理噪声。算法中的关键概念包括:

  1. 核心点:以某点为中心、半径ε邻域内的点数≥MinPts的点,是簇形成的基础。
  2. 边界点:位于核心点的ε邻域内,但自身邻域内点数<MinPts的点。
  3. 噪声点:既非核心点也非边界点的孤立点。
  4. 密度可达性:若点A通过一系列核心点间接可达点B,则称A与B密度可达。
  5. 密度连通性:若存在核心点O,使得点A和B均密度可达于O,则A与B密度连通。

算法步骤

  1. 初始化参数:设置邻域半径ε和最小密度阈值MinPts。
  2. 遍历未访问点:随机选择一个未访问点,计算其ε邻域内的点数:
    • 若点数<MinPts:标记为噪声点(可能后续被重新归类为边界点)。
    • 若点数≥MinPts:标记为核心点,创建新簇,递归合并所有密度可达点。
  3. 扩展聚类:通过核心点的邻域不断吸收边界点和可达核心点,直至无法扩展。
  4. 重复处理:遍历所有未访问点,直至数据集处理完毕。

特性

  • 时间复杂度:O(n log n)(使用空间索引时)
  • 可发现任意形状的簇
  • 自动识别噪声点
  • 对参数敏感

聚类评估指标

1. 轮廓系数 (Silhouette Coefficient)

综合衡量样本的簇内紧密度簇间分离度
s ( i ) = b ( i ) − a ( i ) max ⁡ { a ( i ) , b ( i ) } s(i) = \frac{b(i) - a(i)}{\max\{a(i), b(i)\}} s(i)=max{a(i),b(i)}b(i)a(i)

  • a ( i ) a(i) a(i):样本 i 到同簇其他点的平均距离
  • b ( i ) b(i) b(i):样本 i 到最近其他簇的平均距离
  • 取值范围:[-1, 1],值越大聚类质量越高

2. Calinski-Harabasz 指数

通过方差比评估聚类质量:
C H = t r ( B k ) / ( K − 1 ) t r ( W k ) / ( n − K ) CH = \frac{tr(B_k)/(K-1)}{tr(W_k)/(n-K)} CH=tr(Wk)/(nK)tr(Bk)/(K1)

  • B k B_k Bk:簇间协方差矩阵
  • W k W_k Wk:簇内协方差矩阵
  • 值越大表示簇间差异越大,簇内越紧密

K-means 的 K 值选择方法详解

肘部法则 (Elbow Method)

计算不同 K 值对应的 SSE:

sse = []
for k in range(1, 11):kmeans = KMeans(n_clusters=k)kmeans.fit(data)sse.append(kmeans.inertia_)

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

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

相关文章

Oracle在ERP市场击败SAP

2024年,甲骨文(Oracle)以87亿美元的ERP收入和6.63%的市场份额,首次超越SAP,成为全球最大的ERP应用软件供应商,结束了SAP自上世纪80年代以来在该领域的长期霸主地位。据APPS RUN THE WORLD的市场调研&#x…

嵌入式面试高频笔试题目解析

一、基础概念与 C 语言核心题 1. 指针与内存操作 典型题目: char str[] = "hello"; char *ptr = "world"; str[0] = H; // 合法吗? ptr[0] = W; // 合法吗?为什么?解析: str 是栈上数组,可修改内容,str[0]=H 合法。ptr 指向常量字符串区,修改会…

【Python】Selenium切换网页的标签页的写法(全!!!)

在使用selenium做网站爬取测试的时候,我们经常会遇到一些需要点击的元素,才能点击到我们想要进入的页面, 于是我们就要模拟 不断地 点点点击 鼠标的样子。 这个时候网页上就会有很多的标签页,你的浏览器网页标签栏 be like: 那…

MySQL GTID模式主从同步配置全指南:从配置到故障转移

前言 MySQL主从复制是企业级数据库架构的基础,而GTID(Global Transaction Identifier)模式则是MySQL 5.6版本后推出的革命性复制技术。本文将详细介绍如何配置基于GTID的主从同步,并包含实用的故障转移操作指南。 一、GTID模式核心优势 相比传统基于…

MAC系统下完全卸载Android Studio

删除以下文件 /Applications/Android Studio.app /Users/用户名/Library/Application Support/Google/AndroidStudio2024.2 /Users/用户名/Library/Google/AndroidStudio /Users/用户名/Library/Preferences/com.google.android.studio.plist /Users/用户名/Library/Cache…

<C#>.NET WebAPI 的 FromBody ,FromForm ,FromServices等详细解释

在 .NET 8 Web API 中,[FromBody]、[FromForm]、[FromHeader]、[FromKeyedServices]、[FromQuery]、[FromRoute] 和 [FromServices] 这些都是用于绑定控制器动作方法参数的特性,下面为你详细解释这些特性。 1. [FromBody] 作用:从 HTTP 请求…

# 透视 Linux 内核:Socket 机制的底层架构与运行逻辑深度解析

在由 Linux 操作系统构建的庞大网络生态中,Socket 作为网络通信的核心枢纽,承载着不同主机间应用进程的数据交互重任。无论是日常的网页浏览、在线游戏,还是复杂的分布式系统通信,Socket 都在幕后扮演着关键角色。尽管多数开发者对…

# 利用迁移学习优化食物分类模型:基于ResNet18的实践

利用迁移学习优化食物分类模型:基于ResNet18的实践 在深度学习的众多应用中,图像分类一直是一个热门且具有挑战性的领域。随着研究的深入,我们发现利用预训练模型进行迁移学习是一种非常有效的策略,可以显著提高模型的性能&#…

Excel提取图片并自动上传到文件服务器(OOS),获取文件链接

Excel提取图片并自动上传到接口 在实际项目中,我们可能经常会遇到需要批量从Excel文件(.xlsx)中提取图片并上传到特定接口的场景。今天,我就详细介绍一下如何使用Python实现这一功能,本文会手把手教你搭建一个完整的解…

jmeter利用csv进行参数化和自动断言

1.测试数据 csv测试数据如下(以注册接口为例) 2.jemer参数化csv设置 打开 jmeter,添加好线程组、HTTP信息头管理器、CSV 数据文件设置、注册请求、响应断言、查看结果树 1) CSV 数据文件设置 若 CSV 中数据包含中文,…

腾讯云对象存储m3u8文件使用腾讯播放器播放

参考腾讯云官方文档: 播放器 SDK Demo 体验_腾讯云 重要的一步来了: 登录腾讯云控制台,找到对象存储的存储桶。 此时,再去刷新刚才创建的播放器html文件,即可看到播放画面了。

CSS 美化页面(五)

一、position属性 属性值‌‌描述‌‌应用场景‌static默认定位方式,元素遵循文档流正常排列,top/right/bottom/left 属性无效‌。普通文档流布局,默认布局,无需特殊定位。relative相对定位,相对于元素原本位置进行偏…

Spring MVC 核心注解与文件上传教程

一、RequestBody 注解详解 1. 基本使用 作用:从 HTTP 请求体中获取数据,适用于 POST/PUT 请求。 限制:GET 请求无请求体,不可使用该注解。 示例代码 Controller RequestMapping("/demo01") public class Demo01Cont…

js原型链prototype解释

function Person(){} var personnew Person() console.log(啊啊,Person instanceof Function);//true console.log(,Person.__proto__Function.prototype);//true console.log(,Person.prototype.__proto__ Object.prototype);//true console.log(,Function.prototype.__prot…

为您的照片提供本地 AI 视觉:使用 Llama Vision 和 ChromaDB 构建 AI 图像标记器

有没有花 20 分钟浏览您的文件夹以找到心中的特定图像或屏幕截图?您并不孤单。 作为工作中的产品经理,我总是淹没在竞争对手产品的屏幕截图、UI 灵感以及白板会议或草图的照片的海洋中。在我的个人生活中,我总是捕捉我在生活中遇到的事物&am…

Kafka消费者端重平衡流程

重平衡的完整流程需要消费者 端和协调者组件共同参与才能完成。我们先从消费者的视角来审视一下重平衡的流程。在消费者端,重平衡分为两个步骤:分别是加入组和等待领导者消费者(Leader Consumer)分配方案。这两个步骤分别对应两类…

2025年五大ETL数据集成工具推荐

ETL工具作为打通数据孤岛的核心引擎,直接影响着企业的决策效率与业务敏捷性。本文精选五款实战型ETL解决方案,从零门槛的国产免费工具到国际大厂企业级平台,助您找到最适合的数据集成利器。 一、谷云科技ETLCloud:国产数据集成工…

PageIndex:构建无需切块向量化的 Agentic RAG

引言 你是否对长篇专业文档的向量数据库检索准确性感到失望?传统的基于向量的RAG系统依赖于语义相似性而非真正的相关性。但在检索中,我们真正需要的是相关性——这需要推理能力。当处理需要领域专业知识和多步推理的专业文档时,相似度搜索常…

ubuntu20.04 远程桌面Xrdp方式

1,Ubuntu 安装Xrdp 方法 1.1,安装xrdp sudo apt install xrdp 1.2,检查xrdp状态 sudo systemctl status xrdp 1.3,加入ssl-cert sudo adduser xrdp ssl-cert 1.4,重启xrdp服务 sudo systemctl restart xrdp 最后…

Java学习手册:RESTful API 设计原则

一、RESTful API 概述 REST(Representational State Transfer)即表述性状态转移,是一种软件架构风格,用于设计网络应用程序。RESTful API 是符合 REST 原则的 Web API,通过使用 HTTP 协议和标准方法(GET、…