【Sklearn驯化-聚类指标】搞懂机器学习中聚类算法评估指标,轮廓系数、戴维森堡丁指数

news2024/12/25 1:32:09

【Sklearn驯化-聚类指标】搞懂机器学习中聚类算法评估指标,轮廓系数、戴维森堡丁指数
 
本次修炼方法请往下查看
在这里插入图片描述

🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 免费获取相关内容文档关注:微信公众号,发送 pandas 即可获取
🎇 相关内容视频讲解 B站

🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验

🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100%

📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

🌵文章目录🌵

    • 🎯 1. 基本介绍
    • 💡 2. 公式推导
      • 2.1 轮廓系数(Silhouette Coefficient)
      • 2.2 戴维森堡丁指数(Davies-Bouldin Index)
    • 🔍 3. 代码实践
      • 3.1 数据生成
      • 3.2 训练聚类模型
      • 3.3 计算轮廓系数
      • 3.4 计算戴维森堡丁指数
    • 🔍 4. 注意事项
    • 🔍 5. 总结

下滑查看解决方法

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  

🎯 1. 基本介绍

  聚类作为无监督学习的核心任务之一,旨在将数据集中的样本划分为若干个簇,使得簇内的样本相似度高,簇间的样本相似度低。然而,由于缺乏真实标签,聚类效果的评估成为一个挑战。scikit-learn(简称sklearn)提供了多种聚类指标来量化聚类效果。

💡 2. 公式推导

2.1 轮廓系数(Silhouette Coefficient)

  轮廓系数是衡量样本与簇内样本和簇间样本距离的指标。对于每个样本i,轮廓系数计算公式为:
s ( i ) = b ( i ) − a ( i ) m a x ( 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)是样本i与同一簇内其他样本的平均距离。
  • b(i)是样本i与最近簇内样本的平均距离。
  • 轮廓系数的范围从-1到1,接近1表示聚类效果好,0表示样本可能位于两个簇的边界上,-1表示聚类错误。

2.2 戴维森堡丁指数(Davies-Bouldin Index)

  戴维森堡丁指数衡量簇内距离和簇间距离的比率。对于所有簇,戴维森堡丁指数计算公式为:
B = 1 c ∑ = 1 c m a x i ! = j ( s i + s j d i j ) B=\frac{1}{c}\sum_{=1}^{c}max_{i!=j}(\frac{s_i+s_j}{d_{ij}}) B=c1=1cmaxi!=j(dijsi+sj)

  • 其中:
  • c是簇的数量。
  • s_i和s_j分别是第i个和第j个簇的簇内距离(方差)。
  • d_ij是簇i和簇j的中心之间的距离。
  • DB指数越低表示聚类效果越好。

🔍 3. 代码实践

3.1 数据生成

   为了更佳直观的掌握聚类算法中各个指标的原理和具体用法,我们构建简单的数据,对其进行实践,具体数据生成的代码如下所示:

from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score, davies_bouldin_score

# 生成模拟数据
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

3.2 训练聚类模型

   我们以kmeans聚类算法为例,对其进行效果的评估,下面为训练聚类算法的代码过程,具体如下所示:

# 使用KMeans算法进行聚类
kmeans = KMeans(n_clusters=4)
kmeans.fit(X)

3.3 计算轮廓系数

  下面我们对聚类算法通过上述的两个指标进行评估,以此来判断聚类算法的好坏,具体的代码如下所示:

# 计算轮廓系数
silhouette_avg = silhouette_score(X, kmeans.labels_)
print(f"轮廓系数: {silhouette_avg:.2f}")

3.4 计算戴维森堡丁指数

  下面我们对聚类算法通过上述的两个指标进行评估,以此来判断聚类算法的好坏,具体的代码如下所示:

# 计算戴维森堡丁指数
db_score = davies_bouldin_score(X, kmeans.labels_)
print(f"戴维森堡丁指数: {db_score:.2f}")

  

🔍 4. 注意事项

  • 聚类指标依赖于簇的数量和数据分布,需要根据具体问题选择合适的簇数量。
  • 轮廓系数对簇形状和大小敏感,可能不适用于非球形簇。
  • 戴维森堡丁指数在簇大小差异较大时可能不太准确。

🔍 5. 总结

  聚类指标是评估聚类效果的重要工具。在sklearn中,我们可以使用轮廓系数和戴维森堡丁指数等指标来量化聚类的性能。通过理解这些指标的计算方法和适用场景,我们可以更好地评估和优化聚类模型。希望这篇博客能帮助你更深入地理解sklearn中的聚类指标,并将其应用于实际的数据分析和聚类任务中

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

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

相关文章

Redis 7.x 系列【10】数据类型之有序集合(ZSet)

有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 ZADD2.2 ZCARD2.3 ZSCORE2.4 ZRANGE2.5 ZREVRANGE2.6 ZRANK2.7…

ubuntu22.04 设置双屏

一 概述 最近把ubuntu18.04 升级到 22.04 双屏显示出来问题,在此记录下解决问题方案。二 解决方案 1 使用命令查看能检测到显示器 xrandr根据输出的信息,我们可以知道 HDMI-0 与 DP-0 是connected 。检测到两个显示器 2 设置输出显示器分辨率 由于我…

一款专为网页开发者设计的高效工具,它简化了响应式网站的开发流程

大家好,今天给大家分享的是一款专为web开发人员和测试人员设计的工具,它通过改进的web浏览器功能,帮助用户进行响应式web开发和兼容性测试。 主要功能 所有设备上的镜像用户交互:允许开发人员在单一设备上进行操作,实时…

十年磨一剑,华火电燃组合灶重磅问世,引领厨房新时代

十年磨一剑,华火研发团队经过不懈努力,成功将等离子电生明火技术与电陶炉红外线光波炉技术精妙融合,打造出的这款具有划时代是意义的电燃组合灶HH-SZQP60,终于在 2024 年6月震撼登场,该灶以其卓越的创新技术和独特的产…

MTK平台Android13实现三方launcher为默认

一、前言 目前有遇到客户的定制需求,希望使用三方的launcher作为默认的launcher使用,一般情况下直接将三方launcher通过内置到系统并通过overlay机制即可很方便的实现launcher的替换,但是存在一个问题,需要增加ROM的维护成本。本文通过设备在使用前联网通过后台下发三方lau…

花8000元去培训机构学习网络安全值得吗,学成后就业前景如何?

我就是从培训机构学的网络安全,线下五六个月,当时学费不到一万,目前已成功入行。所以,只要你下决心要入这一行,过程中能好好学,那这8000就花得值~ 因为只要学得好,工作两个多月就能赚回学费&am…

Spring中的InitializingBean接口

使用方法 Slf4j Component public class MyBean implements InitializingBean {public MyBean() {log.info("> 构造方法");}Overridepublic void afterPropertiesSet() throws Exception {log.info("> afterPropertiesSet方法");} }Spring中的Bean注…

浏览器插件利器-allWebPluginV2.0.0.14-beta版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX插件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持谷歌、火狐等浏…

免费分享:2021年中国土壤类型空间分布数据(附下载方法)

Lambert等角圆锥投影是J.H.兰勃特于1772年所创,根据其与旋转椭球面的交线个数不同,将其分为兰勃特切圆锥投影和兰勃特割圆锥投影。圆锥面与旋转椭球的交线成为标准纬线。 数据简介 2021年中国土壤类型空间分布数据是基于全国土壤普查办公室1…

Mysql进阶-索引-使用规则-索引失效情况二(or连接的条件、数据分布影响)

文章目录 1、or连接的条件1.1、展示 tb_user 索引1.2、查询 id10 or age231.3、执行计划 id10 or age231.4、给 age 创建 索引1.4、执行计划 phone17799990004 or age23 2、数据分布影响2.1、查询 tb_user2.2、查询 phone >177999900202.3、执行计划 phone >177999900202…

OpenSSL EVP详解

OpenSSL EVP详解 Chapter1 OpenSSL EVP详解一、EVP基本介绍1. EVP 加密和解密2. EVP 签名和验证3. EVP 加解密文件 二、源码结构2.1 全局函数2.2 BIO扩充2.3 摘要算法EVP封装2.4 对称算法EVP封装2.5 非对称算法EVP封装2.6 基于口令的加密 三、开发实例3.1 示例13.2 示例23.3 示…

推动多模态智能模型发展:大型视觉语言模型综合多模态评测基准

随着人工智能技术的飞速发展,大型视觉语言模型(LVLMs)在多模态应用领域取得了显著进展。然而,现有的多模态评估基准测试在跟踪LVLMs发展方面存在不足。为了填补这一空白,本文介绍了MMT-Bench,这是一个全面的…

批量文本处理神器:一键按区间提取内容,革新您的文本管理方式!

在数字化时代,文本处理是每位职场人士都绕不开的工作内容。然而,面对海量的文本数据,如何高效、准确地提取所需内容,成为了许多人头疼的问题。今天,我们隆重推出一款批量文本处理神器,它凭借一键按区间提取…

《安全历史第3讲——从万里长城防御体系看软件安全体系建设》

长城,是中华民族的一张重要名片,是中华民族坚韧不屈、自强不息的精神象征,被联合国教科文组织列入世界文化遗产名录。那么在古代,长城是如何以其复杂的防御体系,一次次抵御外族入侵,而这些防御体系又能给软…

计算机视觉(CV)技术:优势、挑战与前景

摘要 计算机视觉作为人工智能的关键领域之一,正迅速改变我们的生活和工作方式。本文将探讨CV技术的主要优势、面临的挑战以及未来的发展方向。 关键词 计算机视觉, 人工智能, 数据处理, 自动化, 伦理问题 目录 引言计算机视觉技术的优势计算机视觉技术的挑战实…

经纬恒润推出面向教育行业的仿真测试实验室

随着汽车行业向电动化和智能化的转型,车辆的智能水平和复杂度不断提升,整车的开发周期却越来越短,测试要求越来越高,自动化测试成为必由之路。作为行业技术创新和引领者,高校面临着新能源和智能驾驶等新技术的众多挑战…

数据资产与人工智能的融合之路:探讨如何结合AI技术优化数据资产管理,提升企业智能化水平

目录 一、引言 二、数据资产管理的现状与挑战 1、数据资产管理的重要性 2、数据资产管理的挑战 三、人工智能在数据资产管理中的应用 1、数据采集与整合 2、数据清洗与校验 3、数据安全与隐私保护 4、数据分析与挖掘 四、结合AI技术优化数据资产管理的策略 1、制定数…

安全:Linux重要安全配置之关闭常规ssh链接-开启密钥方式链接-防入侵非常重要以及有效的一项操作

https://doc.youyacao.com/88/2154 安全:Linux重要安全配置之关闭常规ssh链接-开启密钥方式链接-防入侵非常重要以及有效的一项操作 问题背景 优雅草官方的服务器长期被各类牛鬼蛇神来搞事情,之前其中有一台测试服由于属于管理和维护,安全…

数据库系统概论(超详解!!!) 第十四节 数据库恢复技术

1.事务的基本概念 1.事务 事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。 事务和程序是两个概念, 在关系数据库中,一个事务可以是一条SQL语句&#xff…

1012:Joseph

网址如下&#xff1a; OpenJudge - 1012:Joseph 其中一个解法 只想到了一个快速找到下一位处决的人的方法&#xff0c;本质上还是遍历&#xff0c;暂时没想到更优的方法了 代码如下&#xff1a; #include<cstdio> int k;bool judge(int tt, int m, int r){if(tt k) …