轮廓系数【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()
相关推荐
测试员周周2 小时前
【AI测试智能体】为什么传统测试方法对智能体失效?
开发语言·人工智能·python·功能测试·测试工具·单元测试·测试用例
平凡但不平庸的码农2 小时前
Go Slice 详解
算法·golang
dfdfadffa2 小时前
如何用模块化方案组织一个可扩展的前端组件库项目
jvm·数据库·python
2301_812539672 小时前
SQL中如何高效实现分组数据的批量更新_利用窗口函数与JOIN
jvm·数据库·python
RSTJ_16252 小时前
PYTHON+AI LLM DAY THREETY-NINE
开发语言·人工智能·python
2501_901200532 小时前
如何实现SQL存储过程存储过程参数标准化_统一命名规范
jvm·数据库·python
运气好好的3 小时前
Golang怎么用embed嵌入SQL文件_Golang如何将SQL迁移文件嵌入Go程序统一管理【技巧】
jvm·数据库·python
AC赳赳老秦3 小时前
政企内网落地:OpenClaw 离线环境深度适配方案,无外网场景下本地化模型对接与全功能使用
java·大数据·运维·python·自动化·deepseek·openclaw
星越华夏3 小时前
python 将相对路径变成绝对路径
python
l1t3 小时前
mingw和Linux中的gcc和llvm编译器编译的pocketpy执行同一个python脚本的不同效果
linux·运维·python