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

    文章

    4608

    浏览量

    92851
  • python
    +关注

    关注

    56

    文章

    4793

    浏览量

    84641

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

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

收藏 人收藏

    评论

    相关推荐

    Web文档k-means算法的改进

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

    K-means+算法研究综述

    介绍了K-means 算法的目标函数、算法流程,并列举了一个实例,指出了数据子集的数目K、初
    发表于 05-07 14:09 27次下载
    <b class='flag-5'>K-means</b>+<b class='flag-5'>聚</b><b class='flag-5'>类</b><b class='flag-5'>算法</b>研究综述

    基于离散量改进k-means初始中心选择的算法

    传统kmeans算法由于初始中心的选择是随机的,因此会使结果不稳定。针对这个问题,提出一种基于离散量改进
    发表于 11-20 10:03 2次下载

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

    针对传统的K-means算法无法预先明确数目,对初始中心选取敏感且易受离群孤点影响导致
    发表于 11-25 11:35 0次下载

    K均值算法的MATLAB实现

    K-means算法是最简单的一种算法算法的目的是使各个样本与所在
    发表于 12-01 14:07 2.1w次阅读
    <b class='flag-5'>K</b>均值<b class='flag-5'>聚</b><b class='flag-5'>类</b><b class='flag-5'>算法</b>的MATLAB<b class='flag-5'>实现</b>

    K-Means算法改进及优化

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

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

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

    大数据处理的优化抽样K-means算法

    针对大数据环境下K-means算法精度不足和收敛速度慢的问题,提出一种基于优化抽样
    发表于 12-22 15:47 4次下载
    大数据处理的优化抽样<b class='flag-5'>聚</b><b class='flag-5'>类</b><b class='flag-5'>K-means</b><b class='flag-5'>算法</b>

    基于距离最大化和缺失数据的填充算法

    通过对基于K-means的缺失值填充算法的改进,文中提出了基于距离最大化和缺失数据
    发表于 01-09 10:56 0次下载
    基于<b class='flag-5'>距离</b>最大化和缺失数据<b class='flag-5'>聚</b><b class='flag-5'>类</b>的填充<b class='flag-5'>算法</b>

    K-Means算法的简单介绍

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

    如何使用K-Means算法改进的特征加权算法详细资料概述

    聚类分析是将研究对象分为相对同质的群组的统计分析技术,聚类分析的核心就是发现有用的对象簇。K-means算法由于具有出色的速度和良好的可扩展性,一直备受广大学者的关注。然而,传统的
    发表于 12-20 10:28 10次下载

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

    文本演化分析、图像、社区发现等。然而在过程中,大部分现有的k-
    发表于 04-28 16:43 1次下载
    集成簇内和簇间<b class='flag-5'>距离</b>的加权<b class='flag-5'>k-means</b><b class='flag-5'>聚</b><b class='flag-5'>类</b>方法

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

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

    K-means算法指南

    技术领域中,K-means可能是最常见和经常使用的技术之一。K-means使用迭代细化方法,基于用户定义的集群数量(由变量K表示)和数
    的头像 发表于 10-28 14:25 1461次阅读

    大学课程 数据分析 实战之K-means算法(2)算法代码

    继续讲解! 程序来啦! 最后看一下程序示例!看看如何用K-means算法实现数据的过程。程序很简单,侧重让大家了解和掌握
    的头像 发表于 02-11 07:20 449次阅读