0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于距离的聚类算法K-means的设计实现

云深之无迹 来源:云深之无迹 作者:云深之无迹 2022-07-18 09:19 次阅读

K-means 算法是典型的基于距离的聚类算法,采用距离作为相似性的评价指标,两个对象的距离越近,其相似度就越大。而簇是由距离靠近的对象组成的,因此算法目的是得到紧凑并且独立的簇。

假设要将对象分成 k 个簇,算法过程如下:

(1) 随机选取任意 k 个对象作为初始聚类的中心(质心,Centroid),初始代表每一个簇;

(2) 对数据集中剩余的每个对象根据它们与各个簇中心的距离将每个对象重新赋给最近的簇;

(3) 重新计算已经得到的各个簇的质心;

(4) 迭代步骤(2)-(3)直至新的质心与原来的质心相等或小于设定的阈值,算法结束。

注意!

(1) 在 K-means 算法 k 值通常取决于人的主观经验;

(2) 距离公式常用欧氏距离和余弦相似度公式,前者是根据位置坐标直接计算的,主要体现个体数值特征的差异,而后者更多体现了方向上的差异而不是位置上的,cosθ越接近 1 个体越相似,可以修正不同度量标准不统一的问题;

(3) K-means 算法获得的是局部最优解,在算法中,初始聚类中心常常是随机选择的,一旦初始值选择的不好,可能无法得到有效的聚类结果。

对于一堆数据,K 值(簇数)的最优解如何确定呢?常见的有“肘”方法

(Elbow method)和轮廓系数法(Silhouette Coeffient):

① “肘”方法:核心指标是 SSE(sum of the squared errors,误差平方和),即所有样本的聚类误差(累计每个簇中样本到质心距离的平方和),随着 K 的增大每个簇聚合度会增强,SSE 下降幅度会增大,随着 K 值继续增大 SSE 的下降幅度会减少并趋于平缓,SSE 和 K 值的关系图会呈现成一个手肘的形状,此肘部对应的 K 值就是最佳的聚类数。

② 轮廓系数法:结合聚类的凝聚度(Cohesion)和分离度(Separation)来考虑,凝聚度为样本与同簇其他样本的平均距离,分离度为样本与最近簇中所有样本的平均距离,该值处于-1~1 之间,值越大表示聚类效果越好。

以 iris 数据为例:

poYBAGLUtSOAJKcwAAFOOJv4bLs862.jpg

代码实现

poYBAGLUtTuADjHJAACKef0dKCo616.jpg

由图看出拐点在 K=2 处,K=3 次之,iris 实际数据分成了三类。



审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4456

    浏览量

    90758
  • python
    +关注

    关注

    51

    文章

    4677

    浏览量

    83467

原文标题:Python实现所有算法-K-means

文章出处:【微信号:TT1827652464,微信公众号:云深之无迹】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用K-means压缩图像

    山东大学机器学习(实验六内容)—— K-Means
    发表于 08-28 09:25

    舆情分析的理论基础和算法

    [源码和文档分享]JAVA实现基于k-means算法实现微博舆情热点分析系统
    发表于 06-04 08:21

    调用sklearn使用的k-means模型

    【python】调用sklearn使用k-means模型
    发表于 06-12 13:33

    K-Means有什么优缺点?

    K-Means的主要优点是什么?K-Means的主要缺点是什么?
    发表于 06-10 06:14

    K均值算法的MATLAB怎么实现

    什么是K-均值法?K均值算法的MATLAB怎
    发表于 06-10 10:01

    改进的k-means聚类算法在供电企业CRM中的应用

    针对k-means算法存在的不足,提出了一种改进算法。 针对目前供电企业CRM系统的特点提出了用聚类分析方法进行客户群细分模型设计,通过实验验证了本文提出的k-means改进
    发表于 03-01 15:28 15次下载

    Web文档聚类中k-means算法的改进

    Web文档聚类中k-means算法的改进 介绍了Web文档聚类中普遍使用的、基于分割的k-means算法,分析了k-means
    发表于 09-19 09:17 979次阅读
    Web文档聚类中<b class='flag-5'>k-means</b><b class='flag-5'>算法</b>的改进

    K-means+聚类算法研究综述

    介绍了K-means 聚类算法的目标函数、算法流程,并列举了一个实例,指出了数据子集的数目K、初始聚类中心选取、相似性度量和距离矩阵为K-means
    发表于 05-07 14:09 27次下载
    K-<b class='flag-5'>means</b>+聚类<b class='flag-5'>算法</b>研究综述

    基于密度的K-means算法在聚类数目中应用

    针对传统的K-means算法无法预先明确聚类数目,对初始聚类中心选取敏感且易受离群孤点影响导致聚类结果稳定性和准确性欠佳的问题,提出一种改进的基于密度的K-means算法。该
    发表于 11-25 11:35 0次下载

    K-Means算法改进及优化

    局部最优出现错误的聚类结果。针对传统的k-means算法初始聚类中心的缺点,本文提出了p-K-means算法,该算法采用了数学几何
    发表于 12-05 18:32 0次下载
    <b class='flag-5'>K-Means</b><b class='flag-5'>算法</b>改进及优化

    基于布谷鸟搜索的K-means聚类算法

    针对原始K-means聚类算法受初始聚类中心影响过大以及容易陷入局部最优的不足,提出一种基于改进布谷鸟搜索(cs)的K-means聚类算法(ACS-K-
    发表于 12-13 17:24 3次下载

    K-Means算法的简单介绍

    K-Means是十大经典数据挖掘算法之一。K-Means和KNN(K邻近)看上去都是K打头,但却是不同种类的算法。kNN是监督学习中的分类算法
    发表于 07-05 14:18 4617次阅读

    集成簇内和簇间距离的加权k-means聚类方法

    文本演化分析、图像聚类、社区发现等。然而在聚类过程中,大部分现有的类k- means算法主要考虑簇内距离,而忽略了簇间距离的作用。本文结合特征加权方法,提出了一种新的集成簇内和簇间
    发表于 04-28 16:43 1次下载
    集成簇内和簇间<b class='flag-5'>距离</b>的加权<b class='flag-5'>k-means</b>聚类方法

    K-MEANS聚类算法概述及工作原理

    K-means 是一种聚类算法,且对于数据科学家而言,是简单且热门的无监督式机器学习(ML)算法之一。
    的头像 发表于 06-06 11:53 3098次阅读

    K-means聚类算法指南

    在聚类技术领域中,K-means可能是最常见和经常使用的技术之一。K-means使用迭代细化方法,基于用户定义的集群数量(由变量K表示)和数据集来产生其最终聚类。例如,如果将K设置为3,则数据集将分组为3个群集,如果将K设置为4,则将数据分组为4个群集,依此类推。
    的头像 发表于 10-28 14:25 840次阅读