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

聚类之轮廓系数

Silhouette Score(轮廓系数)是用于评估聚类质量的指标之一。它衡量了数据点与同簇内其他点的相似度以及与最近簇的相似度之间的对比。

公式

对于一个数据点 i:

  • a(i): 数据点 i 到同簇内其他点的平均距离(簇内不相似度)。
  • b(i): 数据点 i到最近的其他簇中点的平均距离(簇间不相似度)。
  • 轮廓系数计算公式:

  • 其中:
    • −1≤s(i)≤1
    • s(i)≈1: 数据点聚类效果好,点接近同簇而远离其他簇。
    • s(i)≈0: 数据点位于簇边界。
    • s(i)≈−1: 数据点可能被错误分类到其他簇。

整体 Silhouette Score

对于整个数据集,Silhouette Score 是所有数据点 s(i) 的平均值,用于评价整个聚类的质量。

优点

  1. 无需知道数据的真实标签,可用于无监督学习的聚类模型评估。
  2. 提供了直观的数值指标,便于模型调参或聚类效果比较。

应用场景

  • 选择最佳的聚类数 k:通过计算不同 k 的 Silhouette Score,选择分数最高的 k。
  • 比较不同聚类算法的性能,例如 KMeans、DBSCAN 或层次聚类。

代码示例(使用 Python)

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

# 生成样本数据
X, _ = make_blobs(n_samples=500, centers=4, cluster_std=0.7, random_state=42)

# 使用 KMeans 聚类
kmeans = KMeans(n_clusters=4, random_state=42)
labels = kmeans.fit_predict(X)

# 计算 Silhouette Score
score = silhouette_score(X, labels)
print("Silhouette Score:", score)

结果解读

  • 如果分数接近 1,说明聚类效果较好。
  • 如果分数接近 0 或为负数,说明聚类效果较差。

http://www.kler.cn/a/451288.html

相关文章:

  • Cherno C++学习笔记 P46 箭头运算符
  • webrtc音频模块(三) windows Core Audio API及声音的播放
  • VSCode:IDE显示设置 --自定义字体及主题颜色
  • 【java基础系列】实现数字的首位交换算法
  • leetcode之hot100---234回文链表(C++)
  • Oracle 数据库函数的用法(一)
  • Github Copilot:已免费,速回归!!!
  • 彻底认识和理解探索分布式网络编程中的SSL安全通信机制
  • Pytorch+Mumu模拟器+萤石摄像头实现对小孩学习的监控
  • ip归属地跨省会变吗?ip地址归属地不对怎么办
  • MyBatisSQL优化
  • FastJson读取resources下的json文件并且转成对象
  • flutter轮播图控件根据图片高度动态调整图高度
  • GO语言基础面试题
  • 机器人角度参考方式
  • Linux的启动流程
  • 渗透测试 - webshell jsp一句话大马 蚁剑连接
  • OpenAI 普及 ChatGPT,开通热线电话,近屿智能深耕AI培训
  • Spring Boot 中的 @Scheduled 定时任务以及开关控制
  • 赋能新一代工业机器人-望获实时linux在工业机器人领域应用案例
  • OpenAI 展示全新桌面版 ChatGPT
  • 重温设计模式--原型模式
  • 人工智能与物联网:从智慧家居到智能城市的未来蓝图
  • Python PyMupdf 去除PDF文档中Watermark标识水印
  • 国标GB28181-2022平台EasyGBS:安防监控中P2P的穿透方法
  • Rust: offset祼指针操作