轮廓系数【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()
相关推荐
用户8356290780512 小时前
Python 实现 PowerPoint 形状动画设置
后端·python
ponponon3 小时前
时代的眼泪,nameko 和 eventlet 停止维护后的项目自救,升级和替代之路
python
Flittly3 小时前
【从零手写 ClaudeCode:learn-claude-code 项目实战笔记】(5)Skills (技能加载)
python·agent
敏编程3 小时前
一天一个Python库:pyarrow - 大规模数据处理的利器
python
哥布林学者5 小时前
高光谱成像(五)高光谱成像的噪声估计
机器学习·高光谱成像
Flittly5 小时前
【从零手写 ClaudeCode:learn-claude-code 项目实战笔记】(4)Subagents (子智能体)
python·agent
CoovallyAIHub5 小时前
181小时视频丢给GPT-5,准确率只有15%——南大联合NVIDIA等五校发布多模态终身理解数据集
深度学习·算法·计算机视觉
CoovallyAIHub5 小时前
CVPR 2026 | GS-CLIP:3D几何先验+双流视觉融合,零样本工业缺陷检测新SOTA,四大3D工业数据集全面领先!
深度学习·算法·计算机视觉
有意义8 小时前
深度拆解分割等和子集:一维DP数组与倒序遍历的本质
前端·算法·面试
用户726876103379 小时前
解放双手的健身助手:基于 Rokid AR 眼镜的运动计时应用
算法