产品经理3分钟都懂K-means聚类算法(附源码)

简介: k-means:一种聚类算法,将样本集data[N]分成K个类(要把N个杂乱无章的样本聚合成K个不同的类别,所以是聚类算法嘛)。经过k-means聚类后,各类别内部的样本会尽可能的紧凑,而各类别之间的样本会尽可能的分开。

image.png

品经理3分钟都懂k-means聚类算法(附C++实现源码)

k-means:一种聚类算法,将样本集data[N]分成K个类(要把N个杂乱无章的样本聚合成K个不同的类别,所以是聚类算法嘛)。经过k-means聚类后,各类别内部的样本会尽可能的紧凑,而各类别之间的样本会尽可能的分开。

k-means思想:将距离最近的样本认为属于同一个类,每一个类有一个“质心”样本。举例,漫天繁星,距离较近的抱团星星,我们认为它们属于一个星团,而每个星团有一颗“质心”恒星作为这个星团的代表。

k-means计算过程:
1)初始化
1.1)初始化值:输入K值,输入data[N]全集
1.2)初始化质心:从data[N]全集中随机的选取K个样本,作为K个类的质心
1.3)初始化分类:对于随机选取的初始化质心,初始化每个样本的分类,将样本归入离它最近的那个质心那一类(可以认为是第0次迭代)
2)迭代运算
2.1)质心变换:对于同一个类的样本集合,重新计算质心
2.2)分类变换:对于变换后的质心,所有样本重新计算分类,计算依据仍是“将样本归入离它最近的那个质心那一类”
2.3)反复的进行迭代运算,直至2.1)质心变换与2.2)分类变换都不再变化为止,理论可以证明,k-means聚类算法一定是收敛的
3)输出结果

k-means关键点:
1)距离:两个样本之间的距离如何定义,是和业务场景紧密相关的。如果样本是二维平面上的点,两个点之间的距离可以定义为二维欧式距离(Euclidean distance),如果样本是天空中的繁星,两颗繁星之间的举例可以定义为三维欧式距离。
2)质心变换:定义了距离之后,初始化分类时,会把样本聚为最近质心那一类。初始化分类后,如何进行质心变换呢?一般使用距离方差法:将同一类中的所有样本都尝试着作为“假定质心”,计算此时该类中所有样本与“假定质心”距离的方差,将方差最小的“假定质心”设为该类的新质心。

工程实现:
工程上对k-means实现,要尽量做到算法步骤与业务场景的解耦:
1)k-means的计算过程是与业务无关的
2)样本,以及样本之间距离的计算是与业务有关的
上述解耦可以利用模版技术来实现,具体代码点“阅读原文”,欢迎下载。

目录
相关文章
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
3月前
|
算法 数据挖掘 定位技术
基于密度的聚类算法能够在含有噪声的数据集中识别出任意形状和大小的簇(Matlab代码实现)
基于密度的聚类算法能够在含有噪声的数据集中识别出任意形状和大小的簇(Matlab代码实现)
102 1
|
3月前
|
机器学习/深度学习 分布式计算 算法
【风场景生成与削减】【m-ISODATA、kmean、HAC】无监督聚类算法,用于捕获电力系统中风场景生成与削减研究(Matlab代码实现)
【风场景生成与削减】【m-ISODATA、kmean、HAC】无监督聚类算法,用于捕获电力系统中风场景生成与削减研究(Matlab代码实现)
196 0
|
3月前
|
机器学习/深度学习 数据采集 算法
【风光场景生成】基于改进ISODATA的负荷曲线聚类算法(Matlab代码实现)
【风光场景生成】基于改进ISODATA的负荷曲线聚类算法(Matlab代码实现)
112 0
|
4月前
|
人工智能 算法 安全
【博士论文】基于局部中心量度的聚类算法研究(Matlab代码实现)
【博士论文】基于局部中心量度的聚类算法研究(Matlab代码实现)
160 0
|
5月前
|
算法 数据可视化 数据挖掘
基于EM期望最大化算法的GMM参数估计与三维数据分类系统python源码
本内容展示了基于EM算法的高斯混合模型(GMM)聚类实现,包含完整Python代码、运行效果图及理论解析。程序使用三维数据进行演示,涵盖误差计算、模型参数更新、结果可视化等关键步骤,并附有详细注释与操作视频,适合学习EM算法与GMM模型的原理及应用。
|
4月前
|
算法 数据可视化 数据挖掘
基于AOA算术优化的KNN数据聚类算法matlab仿真
本程序基于AOA算术优化算法优化KNN聚类,使用Matlab 2022A编写。通过AOA搜索最优特征子集,提升KNN聚类精度,并对比不同特征数量下的聚类效果。包含完整仿真流程与可视化结果展示。
|
5月前
|
机器学习/深度学习 人工智能 算法
AP聚类算法实现三维数据点分类
AP聚类算法实现三维数据点分类
189 0
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
1219 6
|
9月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

热门文章

最新文章