轮廓系数【python,机器学习,算法】

用途

使用轮廓系数评估聚类质量。聚类质量的评价方法,本质上,都是根据簇内和簇间的效果对比进行衡量。

定义

假设样本集合为 S = a 1 , a 2 , a 3 , . . . , a n S={a_1,a_2,a_3,...,a_n} S=a1,a2,a3,...,an,该样划分成 4 个聚类 G 1 , G 2 , G 3 , G 4 G_1,G_2,G_3,G_4 G1,G2,G3,G4,对于每个样本 a i a_i ai,

  1. 计算 a i a_i ai样本到 a i a_i ai所在聚类 G 1 G_1 G1中的每个样本的距离,然后取平均值 G a i ˉ \bar{Ga_i} Gaiˉ。
  2. 分别计算 a i a_i ai到其他聚类的平均距离,取最小的平均值 G b i ˉ \bar{Gb_i} Gbiˉ
  3. 那么 a i a_i ai的聚类质量 S ( a i ) = G b i ˉ − G a i ˉ m a x ( G b i ˉ , G a i ˉ ) S(a_i)=\frac{\bar{Gb_i}-\bar{Ga_i}}{max(\bar{Gb_i},\bar{Ga_i})} S(ai)=max(Gbiˉ,Gaiˉ)Gbiˉ−Gaiˉ。
  4. 重复上述 1-3 步骤,对数据集中的每个对象计算轮廓系数然后取平均值作为聚类的质量度量。

下面的示例演示了如何使用轮廓系数计算聚类的质量:

python 复制代码
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
from sklearn.metrics import silhouette_score

silhouettteScore = []
data = load_iris()
X = data.data
y = data.target
for i in range(2, 15):
    # 构建并训练模型
    kmeans = KMeans(n_clusters=i, random_state=123).fit(X)
    score = silhouette_score(X, kmeans.labels_)
    silhouettteScore.append(score)
plt.figure(figsize=(10, 6))
plt.plot(range(2, 15), silhouettteScore, linewidth=1.5, linestyle="-")
plt.show()
相关推荐
Croa-vo几秒前
TikTok 数据工程师三轮 VO 超详细面经:技术深挖 + 建模推导 + 压力测试全记录
javascript·数据结构·经验分享·算法·面试
蘑菇小白8 分钟前
时间复杂度
数据结构·算法
ChoSeitaku20 分钟前
线代强化NO19|矩阵的相似与相似对角化
python·线性代数·矩阵
czlczl2002092531 分钟前
算法:组合问题
算法·leetcode·职场和发展
sniper_fandc32 分钟前
Coze智能体实现人生模拟器
python·ai·agent·coze
CoderYanger33 分钟前
优选算法-字符串:63.二进制求和
java·开发语言·算法·leetcode·职场和发展·1024程序员节
Cx330❀44 分钟前
C++ STL set 完全指南:从基础用法到实战技巧
开发语言·数据结构·c++·算法·leetcode·面试
white-persist1 小时前
【攻防世界】reverse | Reversing-x64Elf-100 详细题解 WP
c语言·开发语言·网络·python·学习·安全·php
FeiHuo565151 小时前
微信个人号开发中如何高效实现API二次开发
java·开发语言·python·微信
love530love1 小时前
【保姆级教程】Windows + Podman 从零部署 Duix-Avatar 数字人项目
人工智能·windows·笔记·python·数字人·podman·duix-avatar