前文回顾:
肘部法:SSE误差平方和
SSE(sum of the squared errors)是对簇松散度的衡量,作为目标函数其实是一个严格的坐标下降(Coordinate Decendet)过程。SSE不能保证找到全局最优解,只能确保局部最优解。也就是说,可能会造成多种 k 个簇的划分情况。但是可以重复执行几次kmeans算法,选取SSE最小的一次作为最终的聚类结果。
轮廓系数法(Silhouette Coefficient)
轮廓系数法结合了聚类的凝聚度(Cohesion)和分离度(Separation),用于评估聚类的效果。
指标:内部距离最小化,外部距离最大化。平均轮廓系数的取值范围为[-1,1],系数越大,聚类效果越好。
每次聚类后,每个样本都会得到一个轮廓系数,当它为1时,说明这个点与周围簇距离较远,结果非常好,当它为0,说明这个点可能处在两个簇的边界上,当值为负时,暗含该点可能被误分了。

Sklearn代码实现

import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn import datasets, metricsdef km_sse_cs():"""KMeans算法效果评价1、簇内误方差(SSE, sum of the squared errors),手肘法,肘部法,其大小表明函数拟合的好坏。使用图形工具肘部法,根据簇的数量来可视化簇内误方差。下降率突然变缓时即认为是最佳的k值(拐点)。当KMeans算法训练完成后,可以通过使用内置inertia属性来获取簇内的误方差。2、轮廓系数法(Silhouette Coefficient)结合了聚类的凝聚度(Cohesion)和分离度(Separation)平均轮廓系数的取值范围为[-1,1],系数越大,聚类效果越好。当值为负时,暗含该点可能被误分了。:return:"""sample = load_data()data = sample.data# 存放设置不同簇数时的SSE值sse_list = []# 轮廓系数silhouettes = []# 循环设置不同的聚类簇数for i in range(2, 15):model = KMeans(n_clusters=i)model.fit(data)# kmeans算法inertia属性获取簇内的SSEsse_list.append(model.inertia_)# 轮廓系数silhouette = metrics.silhouette_score(data, model.labels_, metric='euclidean')silhouettes.append(silhouette)# 绘制簇内误方差曲线plt.subplot(211)plt.title('KMeans 簇内误方差')plt.plot(range(2, 15), sse_list, marker='*')plt.xlabel('簇数量')plt.ylabel('簇内误方差(SSE)')# 绘制轮廓系数曲线plt.subplot(212)plt.title('KMeans 轮廓系数')plt.plot(range(2, 15), silhouettes, marker='o')plt.xlabel('簇数量')plt.ylabel('轮廓系数')plt.tight_layout()plt.show()def load_data():"""加载鸢尾花数据集"""return datasets.load_iris()if __name__ == '__main__':import matplotlib as mpl# 汉字字体,优先使用楷体,如果找不到楷体,则使用黑体mpl.rcParams['font.sans-serif'] = ['KaiTi', 'SimHei', 'FangSong']# KMeans算法km_sse_cs()

运行效果图,如下:

通过SSE图可明显看出拐点(肘部)的簇数量是3,与鸢尾花数据集的类别是吻合的。

机器学习之K均值的SSE和轮廓系数相关推荐

  1. 百面机器学习—7.K均值算法、EM算法与高斯混合模型要点总结

    文章目录 一.总结K均值算法步骤 二.如何合理选择K值? 三.K均值算法的优缺点是什么? 四.如何对K均值算法进行调优? 五.EM算法解决什么问题? 六.EM算法流程是什么? 六.EM算法能保证收敛嘛 ...

  2. 机器学习实战——K均值

    文章目录 1 K均值聚类算法 2 使用后处理来提高聚类性能 3 二分K-均值算法 4 示例:对地图上的点进行聚类 5 总结 6 补充 Supervised learning:目标变量实现存在 输入X, ...

  3. sklearn机器学习:K均值聚类

    K-Means 均值聚类聚类算法可以说是最简单但是使用最广的一种聚类算法了,原理也简单易懂,sklearn中提供了很多聚类算法的实现,所以这里就学习一下K-Means算法.接下来会介绍一些关键性的概念 ...

  4. 机器学习实验 - K均值聚类

    目录 一.报告摘要 1.1 实验要求 1.2 实验思路 1.3 实验结论 二.实验内容 2.1 方法介绍 2.2 实验细节 2.2.1 实验环境 2.2.2 实验过程 2.2.3 实验与理论内容的不同 ...

  5. 人工智障学习笔记——机器学习(8)K均值聚类

    一.概念 K均值聚类(K-means)是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则.K-means算 ...

  6. 机器学习之K均值(K-Means)算法

    1.K-Means简介 K均值(K-Means)算法是无监督的聚类方法,实现起来比较简单,聚类效果也比较好,因此应用很广泛.K-Means算法针对不同应用场景,有不同方面的改进.我们从最传统的K-Me ...

  7. 【进阶版】 机器学习之K均值聚类、层次聚类、密度聚类、实战项目含代码(15)

    目录 欢迎订阅本专栏,持续更新中~ 本专栏前期文章介绍! 机器学习配套资源推送 进阶版机器学习文章更新~ 点击下方下载高清版学习知识图册 项目要求 数据透视 代码实战 维度太多,利用PCA降维的思想进 ...

  8. 机器学习算法之 K 均值聚类

    机器学习算法之 K 均值聚类 本文我们来学习一下另一种经常听到的机器学习算法-- K 均值聚类. 这个名字确实跟"K 近邻"有些相像,但是要明确的是,"K 近邻" ...

  9. 聚类轮廓系数java_轮廓系数的应用:kmeans聚类理论篇K的选择(轮廓系数)

    前言javascript kmeans是最简单的聚类算法之一,可是运用十分普遍.最近在工做中也常常遇到这个算法.kmeans通常在数据分析前期使用,选取适当的k,将数据分类后,而后分类研究不一样聚类下 ...

最新文章

  1. 在NAS设备上用NFS服务为RAC数据库和集群件存储oracle文件时的mount选项
  2. 以太坊开发(二)使用Ganache CLI在私有链上搭建智能合约
  3. JQuery中ajax方法访问web服务
  4. Ubuntu 下查看CUDA和cuDNN 版本
  5. mysql问题举例_MySql问题总结
  6. python运行时修改代码会怎样_python运行时修改代码的方法——monkey patch
  7. std::string中的反向迭代器rbegin()和rend()
  8. MySQL(21)--- GROUP BY 语句
  9. 总结下MySql优化。防止数据灾难的发生。
  10. 从DCF到DCX:构想照进现实
  11. 股价/期货等时间序列数据的整合检验、Grach建模
  12. Jquery-无法有效获取当前窗口高度
  13. html5拼音显示,HTML5:给汉字加拼音?收起展开组件?
  14. 菜鸟驿站是什么快递_菜鸟驿站是什么快递(菜鸟驿站和快递点的区别)
  15. Firefox上IETab插件造成的一个问题
  16. 安装ahci驱动sata
  17. tas5424_TAS5424A 4 通道汽车数字放大器
  18. Docker 网络之bridge外部世界如何访问容器
  19. nginx+php-fpm docker镜像合二为一
  20. win10自带图片出现文件系统错误 (-2147219196)的修复方法

热门文章

  1. Python基础-背单词游戏!
  2. 高效过滤器发霉的原因及应对措施
  3. 卧槽,被盗号了!!!
  4. 校园二手物品交易系统-JAVA【数据库设计、源码、开题报告】
  5. oracle杀进程报错01031,select视图报错ORA-01031(oracle跨用户基表视图授权)
  6. 3xian的经历和见解....我深思...(转)
  7. 华钜同创:亚马逊开店有哪些注意事项
  8. 5、移植UBOOT之支持Nor Flash
  9. 重塑未来:AI对教育行业的深远影响与挑战
  10. 新华三鹰视方案荣登IT风云榜 守护视频终端安全得认可