聚类结果评价指标——轮廓系数

某个点的轮廓系数定义为:

s=disMeanout−disMeaninmax(disMeanout,disMeanin)s =\frac{disMean_{out} - disMean_{in}}{max(disMean_{out}, disMean_{in})}s=max(disMeanout​,disMeanin​)disMeanout​−disMeanin​​
其中disMeanintdisMean_{int}disMeanint​为该点与本类其他点的平均距离,disMeanoutdisMean_{out}disMeanout​为该点与非本类点的平均距离。该值取值范围为[−1,1][-1, 1][−1,1], 越接近1则说明分类越优秀。在sklearn中函数silhouette_score()计算所有点的平均轮廓系数,而silhouette_samples()返回每个点的轮廓系数。

预设不同的簇数分类结果

原始数据:

分类结果:



结论:预设4簇的时候其平均轮廓系数最高,所以分4簇是最优的,与数据集相匹配。

Show me the code

导包

# 生成数据模块
from sklearn.datasets import make_blobs
# k-means模块
from sklearn.cluster import KMeans
# 评估指标——轮廓系数,前者为所有点的平均轮廓系数,后者返回每个点的轮廓系数
from sklearn.metrics import silhouette_score, silhouette_samplesimport numpy as np
import matplotlib.pyplot as plt

生成数据

# 生成数据
x_true, y_true = make_blobs(n_samples= 600, n_features= 2, centers= 4, random_state= 1)# 绘制出所生成的数据
plt.figure(figsize= (6, 6))
plt.scatter(x_true[:, 0], x_true[:, 1], c= y_true, s= 10)
plt.title("Origin data")
plt.show()

预设不同簇数并聚类

# 根据不同的n_centers进行聚类
n_clusters = [x for x in range(3, 6)]for i in range(len(n_clusters)):# 实例化k-means分类器clf = KMeans(n_clusters= n_clusters[i])y_predict = clf.fit_predict(x_true)# 绘制分类结果plt.figure(figsize= (6, 6))plt.scatter(x_true[:, 0], x_true[:, 1], c= y_predict, s= 10)plt.title("n_clusters= {}".format(n_clusters[i]))ex = 0.5step = 0.01xx, yy = np.meshgrid(np.arange(x_true[:, 0].min() - ex, x_true[:, 0].max() + ex, step),np.arange(x_true[:, 1].min() - ex, x_true[:, 1].max() + ex, step))zz = clf.predict(np.c_[xx.ravel(), yy.ravel()])zz.shape = xx.shapeplt.contourf(xx, yy, zz, alpha= 0.1)plt.show()# 打印平均轮廓系数s = silhouette_score(x_true, y_predict)print("When cluster= {}\nThe silhouette_score= {}".format(n_clusters[i], s))# 利用silhouette_samples计算轮廓系数为正的点的个数n_s_bigger_than_zero = (silhouette_samples(x_true, y_predict) > 0).sum()print("{}/{}\n".format(n_s_bigger_than_zero, x_true.shape[0]))

Sklearn 成长之路(五)K-means聚类及其评价指标——轮廓系数相关推荐

  1. OpenCV官方文档 理解k - means聚类

    理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...

  2. OpenCV的k - means聚类 -对图片进行颜色量化

    OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...

  3. 聚类效果评估——轮廓系数(Silhouette Coefficient)附Python代码

    轮廓系数 前言 是什么? 为什么? 由此可得: 怎么用? 不适用 示例 前言 在机器学习中,无监督学习算法中聚类算法算作相对重要的一部分算法.也常在低资源和无标注的情况下使用. 其中KMeans作为聚 ...

  4. 机器学习之K均值的SSE和轮廓系数

    前文回顾: 肘部法:SSE误差平方和 SSE(sum of the squared errors)是对簇松散度的衡量,作为目标函数其实是一个严格的坐标下降(Coordinate Decendet)过程 ...

  5. python计算3j系数_聚类算法评估——轮廓系数及python实现

    含义 轮廓系数(Silhouette Coefficient),是聚类效果好坏的一种评价方式. 可见轮廓系数的值是介于 [-1,1] ,越趋近于1代表内聚度和分离度都相对较优. 计算步骤 1)对于簇中 ...

  6. 聚类评估算法-轮廓系数(Silhouette Coefficient )

    轮廓系数(Silhouette Coefficient),是聚类效果好坏的一种评价方式.最早由 Peter J. Rousseeuw 在 1986 提出.它结合内聚度和分离度两种因素.可以用来在相同原 ...

  7. k means聚类算法_K-Means 聚类算法 20210108

    说到聚类,应先理解聚类和分类的区别 聚类和分类最大的不同在于:分类的目标是事先已知的,而聚类则不一样,聚类事先不知道目标变量是什么,类别没有像分类那样被预先定义出来. K-Means 聚类算法有很多种 ...

  8. 聚类评价指标(轮廓系数 Silhouette coefficient)

    聚类评价指标 最近在做聚类的项目,聚类得到结果后我们需要知道聚类的好坏,用哪个算法效果比较好.肯定要选择那个最好评价的算法.今天我们就不谈算法只谈算法结果的评价. 我也从网上看了很多的别人写的东西,总 ...

  9. 聚类--评估指标--轮廓系数

    让我们来分析一下这个评价指标: 轮廓系数分析 对于第iii个对象,计算它到所属簇中所有其他元素的平均距离,记作aia_iai​(体现凝聚度) 对于第 iii 个对象和不包含该对象的任意簇,计算该对象到 ...

最新文章

  1. pandas数据框,统计某列或者某行数据元素的个数
  2. 独家 | 在机器学习中利用统计插补来处理缺失值(附代码)
  3. .bash_pfofile、.bash_logout和.bashrc区别
  4. LWIP源码结构分析
  5. FFmpeg command line tool(Android中使用FFmpeg命令行)
  6. tomcat+SSH中遇到中文乱码的解决方法
  7. 【NSGAII】基于NSGAII的多目标优化算法的MATLAB仿真
  8. dell r740如何做raid_戴尔入门级4K、IPS广色域显示器:S2721QS表现如何?
  9. Taro+react开发(31)微信小程序都是要通过编译的
  10. 当程序员写不出代码了,该怎么办?
  11. QString转Char*字符串
  12. Roland SRX Series for Mac - 罗兰SRX系列音频插件合集
  13. GridView的DataFormatString
  14. 如何给C盘增大空间,无损
  15. 巫师编程语言“咒语” 设想
  16. 设计模式-实习期笔记
  17. Nexus3忘记admin密码时的解决办法
  18. 分布式技术(下)-RedisFastDFSRabbitMQ
  19. 空间里相片批量导入u盘_如何将手机中的照片、视频快速的保存到U盘上?3分钟教你详细步骤...
  20. verilog i2c 通用控制模块

热门文章

  1. 微信小程序设置背景图片不显示问题解决方法
  2. LINUX下查找大文件及大的文件夹
  3. 2015网易游戏校园招聘笔试题 游戏插件研发岗
  4. Github使用教程图文详解
  5. Python39 升级pip失败
  6. uml序列图参照画法
  7. 存储过程报错ORA-01031 权限不足 ORA-00942 解决办法
  8. linux学成之路(四)上 linux用户与组管理
  9. IT软件开发常用英语词汇
  10. 零售商贩mysql表设计:收货地址表 用户表(关联起来)