【机器学习】聚类算法——K-Means算法(理论+图解)

简介: 【机器学习】聚类算法——K-Means算法(理论+图解)

简 介:下面是我在学习时候的记录并加上自己的理解。本文意在记录自己近期学习过程中的所学所得,如有错误,欢迎大家指正。

 

关键词:Python、机器学习、K-Means聚类

一、K-Means聚类

其实它是一种基于质心的聚类,为什么这么说呢?因为它的设计思想就是从总样本中找到几个标志性的数据,将其定为每个簇的数据中心,然后分别判断每个数据的距离状况,然后进行更新每个簇内的质心。

对于样本集 D = { x 1 , x 2 . . . x n } D=\{x_1,x_2...x_n\}D={x1,x2...xn} 来说,我们要将其分成k个数据簇,也就是对应 C = { C 1 , C 2 , . . . C k } C=\{C_1,C_2,...C_k\}C={C1,C2,...Ck} ,如果是这样,那么我们的目标优化函数就是:

E = ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 2 E=\sum_{i=1}^k\sum_{x\in C_i}||x-\mu_i||_2^2E=i=1kxCixμi22

我们就是要优化该函数,也就是要E越小越好,但是该函数我们是很难进行优化的,因为如果我们要想计算出它的最优解,那么就要穷举出所有的簇分类可能,但是这在实际中是很难进行的,所以就要考虑局部最优采用贪心算法进行优化,我们每次只是进行更新该簇内的质心,然后不断迭代此过程。

二、算法详细流程

  1. 首先确定样本集和待划分的簇类数k
  2. 从样本集中随机初始k个数据中心点
  3. 迭代每一个样本,计算每一个样本对k个数据中心的距离
  4. 标记样本为距离该样本最近的类别簇中
  5. 第一轮遍历数据完成,所有的样本已经找到了自己所属的簇,但这还不是最终的类别,所以还要进行第二轮迭代
  6. 在第二轮迭代之前,需要更新每个簇内的质心
  7. 计算每个簇内的质心 μ = 1 C ∑ x ∈ C x \mu=\frac{1}{C}\sum_{x\in C}xμ=C1xCx
  8. 然后重复3-7的步骤,知道达到预期迭代次数或者两次迭代结果,簇内数据不发生任何变化

算法实现需要注意的几个问题:

  • 类中心向量的初值一般是采用随机初始化的,所以这可能导致每一次的模型聚类效果不同,因为算法内部使用了采用贪心,所以可能导致每次的效果分类不一样。
  • 簇的个数的确定,因为簇的个数事先是无法确定的,我们也不清楚到底将数据分为几个类别,所以我们需要不断地调整k的个数,来判断聚类的效果
  • 迭代终止原则,一般是会定义一个阈值,如果我们两次迭代后发现每个簇的类中心的变化距离小于我们设定的阈值,就说明本次迭代没有发生较大的数据变动,则迭代终止。
目录
相关文章
|
3月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习算法篇】K-近邻算法
K近邻(KNN)是一种基于“物以类聚”思想的监督学习算法,通过计算样本间距离,选取最近K个邻居投票决定类别。支持多种距离度量,如欧式、曼哈顿、余弦相似度等,适用于分类与回归任务。结合Scikit-learn可高效实现,需合理选择K值并进行数据预处理,常用于鸢尾花分类等经典案例。(238字)
|
3月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
4月前
|
算法 数据挖掘 定位技术
基于密度的聚类算法能够在含有噪声的数据集中识别出任意形状和大小的簇(Matlab代码实现)
基于密度的聚类算法能够在含有噪声的数据集中识别出任意形状和大小的簇(Matlab代码实现)
125 1
|
4月前
|
机器学习/深度学习 分布式计算 算法
【风场景生成与削减】【m-ISODATA、kmean、HAC】无监督聚类算法,用于捕获电力系统中风场景生成与削减研究(Matlab代码实现)
【风场景生成与削减】【m-ISODATA、kmean、HAC】无监督聚类算法,用于捕获电力系统中风场景生成与削减研究(Matlab代码实现)
230 0
|
4月前
|
机器学习/深度学习 数据采集 算法
【风光场景生成】基于改进ISODATA的负荷曲线聚类算法(Matlab代码实现)
【风光场景生成】基于改进ISODATA的负荷曲线聚类算法(Matlab代码实现)
133 0
|
5月前
|
人工智能 算法 安全
【博士论文】基于局部中心量度的聚类算法研究(Matlab代码实现)
【博士论文】基于局部中心量度的聚类算法研究(Matlab代码实现)
190 0
|
5月前
|
算法 数据可视化 数据挖掘
基于AOA算术优化的KNN数据聚类算法matlab仿真
本程序基于AOA算术优化算法优化KNN聚类,使用Matlab 2022A编写。通过AOA搜索最优特征子集,提升KNN聚类精度,并对比不同特征数量下的聚类效果。包含完整仿真流程与可视化结果展示。
|
6月前
|
机器学习/深度学习 人工智能 算法
AP聚类算法实现三维数据点分类
AP聚类算法实现三维数据点分类
223 0
|
8月前
|
机器学习/深度学习 数据采集 人工智能
20分钟掌握机器学习算法指南
在短短20分钟内,从零开始理解主流机器学习算法的工作原理,掌握算法选择策略,并建立对神经网络的直观认识。本文用通俗易懂的语言和生动的比喻,帮助你告别算法选择的困惑,轻松踏入AI的大门。
540 8
|
9月前
|
机器学习/深度学习 存储 Kubernetes
【重磅发布】AllData数据中台核心功能:机器学习算法平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。