聚类(Clustering)基础知识3

news2025/4/2 2:46:11

文章目录

  • 一、聚类的性能评价
    • 1、聚类性能评价
      • (1)聚类性能评价方法:
    • 2、参考模型 (reference model)
      • (1)数据集:
      • (2)聚类结果:
      • (3)参考模型:
      • (4)标记向量:
      • (5)样本对数目计算:
      • (6)外部评价指标:
    • 3、外部索引
      • (1)Jaccard 系数 (JC)
    • Fowlkes and Mallows 指数 (FMI)
      • (2)Rand 指数 (Rand Index), RI
    • 4、无参考模型
      • (1)大部分时候只有聚类结果,没有参考模型,只能用内部评价法评估聚类的性能:
    • 5、簇内相似度
      • (1)平均距离:
      • (2)最大距离:
      • (3)簇的半径 (diameter):
    • 6、簇间相似度/距离
      • (1)最小距离:
      • (2)类中心之间的距离:
    • 7、内部评价指标
      • (1)DB 指数 (DBI)
      • (2)Dunn 指数 (DI)
    • 8、Calinski-Harabaz Index (CHI)
    • 9、轮廓指数 (Silhouette Index)
      • (1)例:轮廓指数
      • (2)例:根据SI选择聚类数目
    • 10、聚类小结
    • 11、Scikit-Learn中的聚类算法
      • (1)Classes sklearn.cluster
    • 12、Scikit-Learn中的聚类算法示例
    • 13、采用Scikit-Learn进行聚类算法的实例

一、聚类的性能评价

1、聚类性能评价

(1)聚类性能评价方法:

聚类性能评价方法主要分为两种:

  • 外部评价法 (external criterion):评估聚类结果与参考结果的相似程度。
  • 内部评价法 (internal criterion):评估聚类的本质特征,无需参考结果。

2、参考模型 (reference model)

(1)数据集:

  • 数据集: D = { x 1 , x 2 , . . . , x N } D = \{x_1, x_2, ..., x_N\} D={x1,x2,...,xN}

(2)聚类结果:

  • 聚类结果: C = { C 1 , C 2 , . . . , C K } C = \{C_1, C_2, ..., C_K\} C={C1,C2,...,CK},其中 C k C_k Ck表示属于类别 k k k的样本的集合。

(3)参考模型:

  • 参考模型: C ∗ = { C 1 ∗ , . . . , C K ∗ } C^* = \{C_1^*, ..., C_K^*\} C={C1,...,CK}

(4)标记向量:

  • λ \lambda λ λ ∗ \lambda^* λ 分别为 C C C C ∗ C^* C 的标记向量。

(5)样本对数目计算:

  • a = # { ( x i , x j ) ∣ x i , x j ∈ C k ;   x i , x j ∈ C l ∗ } a = \#\{(x_i, x_j) | x_i, x_j \in C_k; \ x_i, x_j \in C_l^*\} a=#{(xi,xj)xi,xjCk; xi,xjCl}
    • 在两种聚类结果中,两个样本的所属簇相同。
  • d = # { ( x i , x j ) ∣ x i ∈ C k 1 , x j ∈ C k 2 ;   x i ∈ C l 1 ∗ , x j ∈ C l 2 ∗ } d = \#\{(x_i, x_j) | x_i \in C_{k1}, x_j \in C_{k2}; \ x_i \in C_{l1}^*, x_j \in C_{l2}^*\} d=#{(xi,xj)xiCk1,xjCk2; xiCl1,xjCl2}
    • 在两种聚类结果中,两个样本的所属簇不同。
  • b = # { ( x i , x j ) ∣ x i , x j ∈ C k ;   x i ∈ C l 1 ∗ , x j ∈ C l 2 ∗ } b = \#\{(x_i, x_j) | x_i, x_j \in C_k; \ x_i \in C_{l1}^*, x_j \in C_{l2}^*\} b=#{(xi,xj)xi,xjCk; xiCl1,xjCl2}
  • c = # { ( x i , x j ) ∣ x i ∈ C k 1 , x j ∈ C k 2 ;   x i , x j ∈ C l ∗ } c = \#\{(x_i, x_j) | x_i \in C_{k1}, x_j \in C_{k2}; \ x_i, x_j \in C_l^*\} c=#{(xi,xj)xiCk1,xjCk2; xi,xjCl}

(6)外部评价指标:

利用 ( a , b , c , d ) (a, b, c, d) (a,b,c,d)定义外部评价指标:

N ( N − 1 ) / 2 N(N-1)/2 N(N1)/2参考模型相同不同
聚类结果相同 a a a b b b
不同 c c c d d d

3、外部索引

(1)Jaccard 系数 (JC)

  • J C = a a + b + c JC = \frac{a}{a+b+c} JC=a+b+ca
  • J C ∈ [ 0 , 1 ] JC \in [0,1] JC[0,1] J C ↑ JC \uparrow JC,一致性 ↑ \uparrow

Fowlkes and Mallows 指数 (FMI)

  • F M I = a a + b ⋅ a a + c FMI = \sqrt{\frac{a}{a+b} \cdot \frac{a}{a+c}} FMI=a+baa+ca
  • F M I ∈ [ 0 , 1 ] FMI \in [0,1] FMI[0,1] F M I ↑ FMI \uparrow FMI,一致性 ↑ \uparrow

(2)Rand 指数 (Rand Index), RI

  • R I = 2 ( a + d ) N ( N − 1 ) RI = \frac{2(a+d)}{N(N-1)} RI=N(N1)2(a+d)
  • R I ∈ [ 0 , 1 ] RI \in [0,1] RI[0,1] R I ↑ RI \uparrow RI,一致性 ↑ \uparrow

4、无参考模型

(1)大部分时候只有聚类结果,没有参考模型,只能用内部评价法评估聚类的性能:

  • 簇内相似度越高,聚类质量越好。
  • 簇间相似度越低,聚类质量越好。

5、簇内相似度

(1)平均距离:

  • a v g ( C k ) = 1 ∣ C k ∣ ( ∣ C k ∣ − 1 ) ∑ x i , x j ∈ C k d i s t ( x i , x j ) avg(C_k) = \frac{1}{|C_k|(|C_k|-1)} \sum_{x_i, x_j \in C_k} dist(x_i, x_j) avg(Ck)=Ck(Ck1)1xi,xjCkdist(xi,xj)
    • 其中 ∣ C k ∣ |C_k| Ck表示簇 C k C_k Ck中元素的数目。

(2)最大距离:

  • d i a m ( C k ) = max ⁡ x i , x j ∈ C k d i s t ( x i , x j ) diam(C_k) = \max_{x_i, x_j \in C_k} dist(x_i, x_j) diam(Ck)=maxxi,xjCkdist(xi,xj)

(3)簇的半径 (diameter):

  • d i a m ( C k ) = 1 ∣ C k ∣ ∑ x i ∈ C k ( d i s t ( x i , μ k ) ) 2 diam(C_k) = \sqrt{\frac{1}{|C_k|} \sum_{x_i \in C_k} (dist(x_i, \mu_k))^2} diam(Ck)=Ck1xiCk(dist(xi,μk))2
    • 其中 μ k = 1 ∣ C k ∣ ∑ x i ∈ C k x i \mu_k = \frac{1}{|C_k|} \sum_{x_i \in C_k} x_i μk=Ck1xiCkxi
      在这里插入图片描述

6、簇间相似度/距离

(1)最小距离:

  • d m i n ( C k , C l ) = min ⁡ x i ∈ C k , x j ∈ C l d i s t ( x i , x j ) d_{min}(C_k, C_l) = \min_{x_i \in C_k, x_j \in C_l} dist(x_i, x_j) dmin(Ck,Cl)=minxiCk,xjCldist(xi,xj)
    在这里插入图片描述

(2)类中心之间的距离:

  • d c e n ( C k , C l ) = d i s t ( μ k , μ l ) d_{cen}(C_k, C_l) = dist(\mu_k, \mu_l) dcen(Ck,Cl)=dist(μk,μl)
    • 其中 μ k = 1 ∣ C k ∣ ∑ x i ∈ C k x i \mu_k = \frac{1}{|C_k|} \sum_{x_i \in C_k} x_i μk=Ck1xiCkxi
      在这里插入图片描述

7、内部评价指标

(1)DB 指数 (DBI)

   D B I = 1 K ∑ k = 1 K max ⁡ k ≠ l a v g ( C k ) + a v g ( C l ) d c e n ( C k , C l ) DBI = \frac{1}{K} \sum_{k=1}^{K} \max_{k \neq l} \frac{avg(C_k) + avg(C_l)}{d_{cen}(C_k, C_l)} DBI=K1k=1Kmaxk=ldcen(Ck,Cl)avg(Ck)+avg(Cl)
  簇内距离/簇间距离
   D B I ↓ DBI \downarrow DBI,聚类质量 ↑ \uparrow

(2)Dunn 指数 (DI)

   D I = min ⁡ 1 ≤ k < l ≤ K d m i n ( C k , C l ) max ⁡ 1 ≤ k ≤ K d i a m ( C k ) DI = \min_{1 \leq k < l \leq K} \frac{d_{min}(C_k, C_l)}{\max_{1 \leq k \leq K} diam(C_k)} DI=min1k<lKmax1kKdiam(Ck)dmin(Ck,Cl)
  最小簇间距离/最大簇的半径
   D I ↑ DI \uparrow DI,聚类质量 ↑ \uparrow

8、Calinski-Harabaz Index (CHI)

   C H I = t r ( B ) t r ( W ) × N − K K − 1 CHI = \frac{tr(B)}{tr(W)} \times \frac{N - K}{K - 1} CHI=tr(W)tr(B)×K1NK
   C H I ↑ CHI \uparrow CHI,聚类质量 ↑ \uparrow   计算快

  其中 W W W为簇内散度矩阵: W = ∑ k = 1 K ∑ x i ∈ C k ( x i − μ k ) ( x i − μ k ) ⊤ W = \sum_{k=1}^{K} \sum_{x_i \in C_k} (x_i - \mu_k)(x_i - \mu_k)^\top W=k=1KxiCk(xiμk)(xiμk)
  其中簇中心 μ k = 1 ∣ C k ∣ ∑ x i ∈ C k x i \mu_k = \frac{1}{|C_k|} \sum_{x_i \in C_k} x_i μk=Ck1xiCkxi
   t r ( W ) = ∑ k = 1 K ∑ x i ∈ C k d i s t ( x i , μ k ) tr(W) = \sum_{k=1}^{K} \sum_{x_i \in C_k} dist(x_i, \mu_k) tr(W)=k=1KxiCkdist(xi,μk),为矩阵 W W W的迹

   B B B为簇间散度矩阵: B = ∑ k = 1 K ∣ C k ∣ ( μ k − μ ) ( μ k − μ ) ⊤ B = \sum_{k=1}^{K} |C_k|(\mu_k - \mu)(\mu_k - \mu)^\top B=k=1KCk(μkμ)(μkμ)
  其中 μ = 1 N ∑ i = 1 N x i \mu = \frac{1}{N} \sum_{i=1}^{N} x_i μ=N1i=1Nxi
   t r ( B ) = ∑ k = 1 K ∣ C k ∣ d i s t ( μ k , μ ) tr(B) = \sum_{k=1}^{K} |C_k|dist(\mu_k, \mu) tr(B)=k=1KCkdist(μk,μ)

9、轮廓指数 (Silhouette Index)

  对于其中的一个样本点 i i i,记:
  - a ( i ) a(i) a(i):样本点 i i i到与其所属簇中其它点的平均距离
  - d ( i , C k ) ‾ \overline{d(i, C_k)} d(i,Ck):样本点 i i i到其他簇 C k ( x i ∉ C k ) C_k (x_i \notin C_k) Ck(xi/Ck)内所有点的平均距离
  - b ( i ) b(i) b(i):所有 d ( i , C k ) ‾ \overline{d(i, C_k)} d(i,Ck)的最小值
  则样本点 i i i的轮廓宽度为: 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)
   s ( i ) ∈ [ − 1 , 1 ] s(i) \in [-1, 1] s(i)[1,1]
   S I ↑ SI \uparrow SI,聚类质量 ↑ \uparrow
  平均轮廓值为: S I = 1 N ∑ i = 1 N s ( i ) SI = \frac{1}{N} \sum_{i=1}^{N} s(i) SI=N1i=1Ns(i)

(1)例:轮廓指数

  SI值小的点为边缘点

(2)例:根据SI选择聚类数目

  2个簇轮廓分数高,但2个簇的大小不均衡
  4个簇轮廓分数高,且每个簇的轮廓大小比较均衡
  3个簇和5个簇比较糟糕:因为存在低于平均轮廓分数的聚类,轮廓图的大小波动很大

10、聚类小结

  聚类与应用高度相关
  聚类很难评估,但实际应用中很有用
  聚类方法

  • 基于中心的模型:如K均值聚类
  • 基于连接性的模型:如层次聚类(BIRCH、CURE、CHAMELEON、GRIN)
  • 基于分布的模型:基于数据点的产生分布确定模型,如高斯混合模型
  • 基于密度的模型:如DBSCAN、OPTICS、DENCLUE、Mean-shift
  • 基于图模型的聚类:谱聚类
  • 基于网格的聚类:STING、CLIQUE
  • 基于模型的聚类:SOM、基于神经网络的聚类

两个通用工具

  • EM
  • 图及其拉普拉斯矩阵

11、Scikit-Learn中的聚类算法

(1)Classes sklearn.cluster

ClassesDescription
cluster.AffinityPropagation(…)Perform Affinity Propagation Clustering of data.
cluster.AgglomerativeClustering(…)Agglomerative Clustering.
cluster.Birch(…)Implements the BIRCH clustering algorithm.
cluster.DBSCAN(…)Perform DBSCAN clustering from vector array or distance matrix.
cluster.FeatureAgglomeration(…)Agglomerate features.
cluster.KMeans(…)K-Means clustering.
cluster.MiniBatchKMeans(…)Mini-Batch K-Means clustering.
cluster.MeanShift(…)Mean shift clustering using a flat kernel.
cluster.OPTICS(…)Estimate clustering structure from vector array.
cluster.SpectralClustering(…)Apply clustering to a projection of the normalized Laplacian.
cluster.SpectralBiclustering(…)Spectral biclustering (Kluger, 2003).
cluster.SpectralCoClustering(…)Spectral Co-Clustering algorithm (Dhillon, 2001).

Scikit-Learn 官方文档

12、Scikit-Learn中的聚类算法示例

在这里插入图片描述

13、采用Scikit-Learn进行聚类算法的实例

  • Python Data Science Handbook
  • Neptune.ai 聚类算法博客

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

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

相关文章

RK3588使用笔记:设置程序/服务开机自启

一、前言 一般将系统用作嵌入式设备时肯定要布置某些程序&#xff0c;这时候就需要对程序设置开机自己&#xff0c;否则每次都要人为启动&#xff0c;当有些嵌入式系统未连接显示屏或者无桌面环境去操作启动程序时&#xff0c;程序自启就是必须的了&#xff0c;本文介绍在纯li…

python实现股票数据可视化

最近在做一个涉及到股票数据清洗及预测的项目&#xff0c;项目中需要用到可视化股票数据这一功能&#xff0c;这里我与大家分享一下股票数据可视化的一些基本方法。 股票数据获取 目前&#xff0c;我已知的使用python来获取股票数据方式有以下三种: 爬虫获取&#xff0c;实现…

JavaScript DOM与元素操作

目录 DOM 树、DOM 对象、元素操作 一、DOM 树与 DOM 对象 二、获取 DOM 元素 1. 基础方法 2. 现代方法&#xff08;ES6&#xff09; 三、修改元素内容 四、修改元素常见属性 1. 标准属性 2. 通用方法 五、通过 style 修改样式 六、通过类名修改样式 1. className 属…

ARM向量表

向量表作用说明RVBAR在 AArch64 中&#xff0c;重置向量不再是异常向量表的一部分。 有复位向量的专用配置输入引脚和寄存器。在 AArch64 中&#xff0c;处理器从 IMPLEMENTAION‑DEFINED 地址开始执行&#xff0c; 该地址由硬件输入引 脚RVBARADDR定义&#xff0c; 可以通过 R…

leetcode刷题日记——除自身以外数组的乘积

[ 题目描述 ]&#xff1a; [ 思路 ]&#xff1a; 题目要求获取数组中每个元素除自己以外的各元素的乘积最简单的方法就是算出数组所有元素的乘积&#xff0c;然后除以自身&#xff0c;即可得到除自身外各元素的乘积 但要考虑到其自身为0的情况&#xff0c;即当期自身为0时&am…

【信奥一本通提高篇】基础算法之贪心算法

原文 https://bbs.fmcraft.top/blog/index.php/archives/22/ 贪心算法 概述 近年来的信息学竞赛试题&#xff0c;经常出现求一个问题的可行解或最优解的题目。这类问题就是我们通常所说的最优化问题。贪心算法是求解这类问题的一种常用算法。在众多的算法中&#xff0c;贪心…

PyQt6实例_批量下载pdf工具_批量pdf网址获取

目录 前置&#xff1a; 步骤&#xff1a; step one 安装包 step two 获取股票代码 step three 敲代码&#xff0c;实现 step four 网址转pdf网址 视频 前置&#xff1a; 1 本系列将以 “PyQt6实例_批量下载pdf工具”开头&#xff0c;放在 【PyQt6实例】 专栏 2 本节讲…

KMeans算法案例

KMeans算法案例 案例介绍 已知&#xff1a;客户性别、年龄、年收入、消费指数 需求&#xff1a;对客户进行分析&#xff0c;找到业务突破口&#xff0c;寻找黄金客户 数据集共包含顾客的数据, 数据共有 4 个特征, 数据共有 200 条。接下来&#xff0c;使用聚类算法对具有相似…

IDApro直接 debug STM32 MCU

使用IDA pro 逆向分析muc 固件的时候&#xff0c; 难免要进行一些动态的debug&#xff0c;来进一步搞清楚一些内存的数据、算法等&#xff0c;这时候使用远程debug 的方式直接在mcu上进行debug 最合适不过了。 不过有个前提条件就是一般来说有的mcu 会被运行中的代码屏蔽 RDP、…

六十天前端强化训练之第三十六天之E2E测试(Cypress)大师级完整指南

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗&#xff0c;谢谢大佬&#xff01; 目录 一、知识讲解 1. E2E测试核心概念 2. Cypress框架特性 3. 工作原理 4. 测试金字塔定位 二、核心代码示例&#xff1a;用户登录全流程测试 三、实现效果展示 四、学习要…

20250330-傅里叶级数专题之离散傅里叶变换(5/6)

5. 傅里叶级数专题之离散傅里叶变换 推荐视频: 工科生以最快的速度理解离散傅立叶变换(DFT) 哔哩哔哩 20250328-傅里叶级数专题之数学基础(0/6)-CSDN博客20250330-傅里叶级数专题之傅里叶级数(1/6)-CSDN博客20250330-傅里叶级数专题之傅里叶变换(2/6)-CSDN博客20250330-傅里叶…

3.29:数据结构-绪论线性表-上

一、时间复杂度 1、ADT 2、定义法计算时间复杂度&#xff1a;统计核心语句的总执行次数 &#xff08;1&#xff09;例题1&#xff0c;与2022年的真题对比着写 此题关键在于求和公式的转化&#xff0c;类型为&#xff1a;线性循环嵌套非线性循环 2022年那道题如果考场上实在脑…

大模型架构记录13【hr agent】

一 Function calling 函数调用 from dotenv import load_dotenv, find_dotenvload_dotenv(find_dotenv())from openai import OpenAI import jsonclient OpenAI()# Example dummy function hard coded to return the same weather # In production, this could be your back…

conda 清除 tarballs 减少磁盘占用 、 conda rename 重命名环境、conda create -n qwen --clone 当前环境

&#x1f947; 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 &#x1f389; 声明: 作为全网 AI 领域 干货最多的博主之一&#xff0c;❤️ 不负光阴不负卿 ❤️ 文章目录 conda clean --tarballsconda rename 重命名环境conda create -n qwen --clone …

pycharm相对路径引用方法

用于打字不方便&#xff0c;以下直接手写放图&#xff0c;直观理解

新能源智慧灯杆的智能照明系统如何实现节能?

叁仟新能源智慧灯杆的智能照明系统可通过以下多种方式实现节能&#xff1a; 智能调光控制 光传感器技术&#xff1a;在灯杆上安装光传感器&#xff0c;实时监测周围环境的光照强度。当环境光线充足时&#xff0c;如白天或有其他强光源时&#xff0c;智能照明系统会自动降低路…

Jenkins教程(自动化部署)

Jenkins教程(自动化部署) 1. Jenkins是什么&#xff1f; Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具&#xff0c;广泛用于项目开发&#xff0c;具有自动化构建、测试和部署等功能。Jenkins用Java语言编写&#xff0c;可在Tomcat等流行的servlet容器中运行&…

行业智能体大爆发,分布式智能云有解

Manus的一夜爆红&#xff0c;在全球范围内引爆关于AI智能体的讨论。 与过去一般的AI助手不同&#xff0c;智能体&#xff08;AI Agent&#xff09;并非只是被动响应&#xff0c;而是主动感知、决策并执行的应用。Gartner预测&#xff0c;到2028年&#xff0c;15%的日常工作决策…

日语Learn,英语再认识(5)

This is a dedicated function — it exists solely to solve this case. This is a dedicated function. It’s a dedicated method for solving this case. 其他备选词&#xff08;但没dedicated精准&#xff09;&#xff1a; special → 含糊&#xff0c;有时只是“特别”…

【区块链安全 | 第十四篇】类型之值类型(一)

文章目录 值类型布尔值整数运算符取模运算指数运算 定点数地址&#xff08;Address&#xff09;类型转换地址的成员balance 和 transfersendcall&#xff0c;delegatecall 和 staticcallcode 和 codehash 合约类型&#xff08;Contract Types&#xff09;固定大小字节数组&…