轮廓系数【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()
相关推荐
夜思红尘5 小时前
算法--双指针
python·算法·剪枝
人工智能训练5 小时前
OpenEnler等Linux系统中安装git工具的方法
linux·运维·服务器·git·vscode·python·ubuntu
散峰而望6 小时前
【算法竞赛】C++函数详解:从定义、调用到高级用法
c语言·开发语言·数据结构·c++·算法·github
CoderCodingNo6 小时前
【GESP】C++五级真题(贪心思想考点) luogu-B4071 [GESP202412 五级] 武器强化
开发语言·c++·算法
我有一些感想……6 小时前
An abstract way to solve Luogu P1001
c++·算法·ai·洛谷·mlp
前端小L6 小时前
双指针专题(三):去重的艺术——「三数之和」
javascript·算法·双指针与滑动窗口
智航GIS6 小时前
8.2 面向对象
开发语言·python
蹦蹦跳跳真可爱5897 小时前
Python----大模型(GPT-2模型训练加速,训练策略)
人工智能·pytorch·python·gpt·embedding
xwill*7 小时前
π∗0.6: a VLA That Learns From Experience
人工智能·pytorch·python
智者知已应修善业7 小时前
【求等差数列个数/无序获取最大最小次大次小】2024-3-8
c语言·c++·经验分享·笔记·算法