python中kmeans求到类中心的平均距离_k-means算法python实现

本文介绍了k-means算法的思想,包括聚类过程和评估标准——轮廓系数。通过Python代码展示了如何使用sklearn库以及自定义实现k-means算法,并计算每个样本到类中心的平均距离。最后,通过轮廓系数找到合适的k值。
摘要由CSDN通过智能技术生成

1.k-means算法的思想

k-means算法是一种非监督学习方式,没有目标值,是一种聚类算法,因此要把数据划分成k个类别,那么一般k是知道的。

那么假设k=3,聚类过程如下:随机在数据当中抽取三个样本,当做三个类别的中心点(k1,k2,k3);

计算其余点(除3个中心点之外的点)到这三个中心点的距离,每一个样本应该有三个距离(a,b,c),然后选出与自己距离最近的中心点作为自己的标记,形成三个簇群;

分别计算这三个簇群的平均值,把三个平均值与之前的旧三个中心点比较,那么分两种情况:

如果相同:结束聚类。

如果不同:把这三个平均值当做新的中心点,然后重复第二步。

2.轮廓系数sci

那么,我们有一个评估标准:轮廓系数sci=(bi-ai)/max(bi,ai),其中i是样本,bi是i到其他簇群的所有样本距离的最小值,ai是i到本身簇群距离的平均值。需要注意:每一个样本都有一个轮廓系数,它的范围是[-1,1]。

那么以这个图为例,说明一下怎么计算轮廓系数:计算蓝1到自身类别的点距离的平均值ai;

计算蓝1分别到红、绿类别所有点的距离,求出平均值b1,b2,取其中最小值bi

那么蓝1的轮廓系数=(bi-ai)/max(bi,ai),我们希望做到外部距离最大化,内部距离最小化

sc

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值