k-means算法简介

k-means算法是一种无监督学习的聚类算法,用于将数据集划分为K个类别。它通过迭代找到类别的中心点,并将每个数据点分配给最近的中心点。算法性能可通过轮廓系数评估,其值接近1表示性能优秀。在实际应用中,如客户分类,sklearn库提供了k-means的实现和性能评估工具。
摘要由CSDN通过智能技术生成

k-means算法简介

一.什么是k-means

我们假设有这样一个场景。有一大堆硬币毫无任何规则的散落在那里,你事先并不知道这些硬币都是哪个国家的硬币。但是你却想按照国家对这些硬币进行分门别类。该怎么办?

这个时候就需要k-means算法的支持。回到上述例子,我们首先事先并不知道有哪些类别的硬币,即:并不知道目标值是什么,所以k-means算法是一种无监督的学习方式。同时,把不同国家队硬币分门别类,故,这是一种分类算法。“物以类聚,币以国分”,所以k-means这种算法又是“聚类”算法的一种。

二.k-means算法的步骤

k-means算法有如下步骤:

  • step1、随机设置K个特征空间内的点作为初始的聚类中心点。说到这里,应该能想到:这个K是一个超参数,需要自己指定。如果不好拿捏,那么可以运用交叉验证和网格搜索的方式进行处理。

  • step2、对于其他每个点,分别计算到它们到K个中心的距离(即:每个点都要经过k次计算),每个点经过k次计算之后,在这k个计算结果当中选择最近的一个聚类中心点作为标记类别

  • step3、接着对着标记的聚类中心之后,重新计算出每个聚类的新中心点(平均值),并且与旧的中心点作比较

  • step4、如果计算得出的新中心点与原中心点一样,那么结束,否则重新进行第二步过程

在step2当中,提到了一个名词:中心距离。那么K-means算法当中的这个中心距离是怎么衡量的呢?

与k-近邻算法一样,可以是欧氏距离,可以是曼哈顿距离,也可以是余弦距离。这个也被称为相似度算法,对于这个,不止这三个,具体看:聚类算法第一部分

在这里插入图片描述

其中,A,B代表属性向量。

三.k-means性能评估指标

k-means属于聚类算法的一种,关于聚类算法的评估指标,有不止一种方式,这里,只简单的介绍一些轮廓系数,它的公式如下:

在这里插入图片描述

其他的评估指标,具体见:聚类算法第四部分
对于每个点i为聚类数据中的样本 ,bi 为i 到其它族群的所有样本的距离的最小值,ai为i 到本身簇的距离平均值

最终计算出所有的样本点的轮廓系数平均值。这个值越接近1,说明性能越好,越接近-1,则说明性能越差。k-means所要达到的最终的目的:外部距离(即:不同类别之间的距离)要尽可能的大,但是内部距离(即:相同类别的点之间的距离)要尽可能的小,如下图所示:

在这里插入图片描述

在sklearn中,为我们提供了k-means性能评估指标的API如下:

sklearn.metrics.silhouette_score

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值