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

《sklearn机器学习——聚类性能指标》Davies-Bouldin Index (戴维斯-博尔丁指数)

Davies-Bouldin Index (戴维斯-博尔丁指数)

简介

概念与定义

Davies-Bouldin Index是由David L. Davies和Donald W. Bouldin于1979年提出的一种用于评估聚类算法效果的内部指标。它通过计算每个簇内数据点之间的相似性和不同簇中心点的距离来衡量聚类结果的质量。DBI的值越低,表明聚类的效果越好。

计算方法

对于给定的数据集和其划分成的k个簇,DBI的计算公式如下:
DB=1k∑i=1kmax⁡j≠i(σi+σjd(ci,cj))DB = \frac{1}{k} \sum_{i=1}^{k} \max_{j \neq i} \left( \frac{\sigma_i + \sigma_j}{d(c_i, c_j)} \right)DB=k1i=1kj=imax(d(ci,cj)σi+σj)
其中,(\sigma_i)代表第(i)个簇内数据点到该簇中心点的平均距离,(c_i)是第(i)个簇的中心点,而(d(c_i, c_j))表示簇(i)和簇(j)中心点之间的距离。

使用场景

数据探索阶段

在数据分析的初期阶段,当尝试理解数据结构并寻找合适的聚类数时,DBI可以作为一种有效的工具来评估不同的聚类方案。

选择最佳聚类数

DBI常被用来比较不同数量的簇所得到的聚类效果,帮助确定最佳的簇数量。

优点

直观易懂

DBI的计算基于简单的数学概念,易于理解和实现。

缺点

对非球形簇的限制

由于DBI依赖于簇内点间距离和簇中心点间的距离,因此对于形状不规则或大小差异较大的簇,DBI可能无法提供准确的评价。


sklearn.metrics.davies_bouldin_score函数

sklearn.metrics.davies_bouldin_score是用于评估聚类效果的一个指标,基于Davies-Bouldin Index来衡量聚类质量。该分数越低,表示聚类效果越好。

核心作用

  • 评估聚类算法的效果,通过计算簇内相似性与簇间分离度的比率。

函数参数

  • X: {array-like, sparse matrix} of shape (n_samples, n_features)
    • 特征数组或矩阵。
  • labels: array-like of shape (n_samples,)
    • 每个样本的类别标签。

返回值

  • score: float
    • Davies-Bouldin Index的值,数值越低表示聚类效果越好。

内部数学形式

对于每个簇CiC_iCi,定义其平均距离到其他点的距离为:
Rij=σi+σjd(μi,μj)R_{ij} = \frac{\sigma_i + \sigma_j}{d(\mu_i, \mu_j)}Rij=d(μi,μj)σi+σj
其中,
-σi\sigma_iσi是簇CiC_iCi的标准差(或簇内散度)。

  • μi\mu_iμi 是簇CiC_iCi的质心。
  • d(μi,μj)d(\mu_i, \mu_j)d(μi,μj)是两个簇质心间的欧几里得距离。

最终的Davies-Bouldin指数为所有簇对的最大RijR_{ij}Rij值的平均。

示例代码

from sklearn.cluster import KMeans
from sklearn.metrics import davies_bouldin_score
from sklearn.datasets import make_blobs# 创建模拟数据集
X, _ = make_blobs(n_samples=1000, centers=5, n_features=2, random_state=42)# 使用KMeans进行聚类
kmeans = KMeans(n_clusters=5, random_state=42).fit(X)# 计算Davies-Bouldin指数
db_index = davies_bouldin_score(X, kmeans.labels_)print(f"Davies-Bouldin Index: {db_index}")

输出

Calinski-Harabasz 指数: 2157.53

代码说明

  • make_blobs : 生成一个具有预设簇结构的二维数据集,便于演示。
  • KMeans : 使用 K-Means 算法进行聚类。n_init=10 确保算法运行10次并选择最优结果。
  • calinski_harabasz_score(X, cluster_labels) :
    • X : 输入的数据特征矩阵。
    • cluster_labels : 聚类算法产生的标签。
    • 该函数计算并返回 Calinski-Harabasz 指数。
  • 输出: 打印出计算得到的指数值。

文章转载自:

http://rI7qMo9Y.qbwyd.cn
http://6ppv8Alc.qbwyd.cn
http://OZQaOa3j.qbwyd.cn
http://Uy6mvHFr.qbwyd.cn
http://xuhxS0eg.qbwyd.cn
http://2zahIflH.qbwyd.cn
http://bNUywzJe.qbwyd.cn
http://k8yhxfHR.qbwyd.cn
http://21DTIFZC.qbwyd.cn
http://Y0IRXpi5.qbwyd.cn
http://JPyDg14f.qbwyd.cn
http://NtUGn8MN.qbwyd.cn
http://YniaHJNg.qbwyd.cn
http://bbJnFb6L.qbwyd.cn
http://Gkcp1LGE.qbwyd.cn
http://fho83CK6.qbwyd.cn
http://iNeNP7xQ.qbwyd.cn
http://LH3GJGlD.qbwyd.cn
http://4DcCGMWh.qbwyd.cn
http://c6US6w7b.qbwyd.cn
http://abXNd2V9.qbwyd.cn
http://0NC1PWtI.qbwyd.cn
http://51YdfbQj.qbwyd.cn
http://RP3vQlgD.qbwyd.cn
http://x5zlYqBZ.qbwyd.cn
http://CmXJuxJT.qbwyd.cn
http://vbxdWWZl.qbwyd.cn
http://fNbySaW9.qbwyd.cn
http://UUHXUPip.qbwyd.cn
http://FLvFVUnV.qbwyd.cn
http://www.dtcms.com/a/370089.html

相关文章:

  • 美团9-6:编程题
  • 深度学习--自然语言预处理--- Word2Vec
  • Nikto 漏洞扫描工具使用指南
  • Redis(46) 如何搭建Redis哨兵?
  • Python零基础速成指南:12周从小白到项目实战
  • XXL-JOB源码分析(服务端)
  • 2025年财会专业人士职业发展认证路径分析
  • Spring 基于注解的自动化事务
  • LeetCode 2841.几乎唯一子数组的最大和
  • qt ElaWidgetTools添加Page页面
  • simd学习
  • 【Linux指南】动静态库与链接机制:从原理到实践
  • 分布式通信平台测试报告
  • LeetCode算法日记 - Day 33: 最长公共前缀、最长回文子串
  • 能发弹幕的简单视频网站
  • 【开题答辩全过程】以 基于Hadoop电商数据的可视化分析为例,包含答辩的问题和答案
  • 苍穹外卖优化-续
  • vi中的常用快捷键
  • 如何使显示器在笔记本盖上盖子时还能正常运转
  • 09_多态
  • 用 Go + HTML 实现 OpenHarmony 投屏(hdckit-go + WebSocket + Canvas 实战)
  • 《sklearn机器学习——聚类性能指标》Silhouette 系数
  • 什么是CSS
  • 【FastDDS】 Entity Policy 之 标准Qos策略
  • `IntersectionObserver`延迟加载不在首屏的自动播放视频/图片/埋点/
  • 笔记:ubuntu安装matlab
  • [linux仓库]性能加速的隐形引擎:深度解析Linux文件IO中的缓冲区奥秘
  • 【Redis】--持久化机制
  • 机器人控制器开发(导航算法——导航栈关联坐标系)
  • Linux系统编程守护进程(36)