深度解析:K-means聚类算法(原理+流程+图解+代码+优化全攻略)

张开发
2026/4/7 14:21:52 15 分钟阅读

分享文章

深度解析:K-means聚类算法(原理+流程+图解+代码+优化全攻略)
深度解析K-means聚类算法原理流程图解代码优化全攻略前言一、K-means聚类算法核心定义1. 算法定义2. 算法核心思想3. 算法适用场景二、K-means算法核心原理1. 核心原理距离计算2. 核心目标函数损失函数3. 核心规则三、K-means算法标准执行流程图四、K-means算法详细执行步骤序号版步骤1确定参数K步骤2初始化质心步骤3样本分配簇划分步骤4更新质心步骤5迭代收敛步骤6输出结果五、K-means算法直观案例演示手算理解1. 数据集2. 设定K23. 初始质心4. 第一次迭代5. 第二次迭代6. 收敛六、K-means算法Python代码实现原生库版1. 原生Python实现理解原理2. Sklearn库实现工业级七、K值如何确定手肘法轮廓系数法1. 手肘法最常用2. 轮廓系数法八、K-means算法优缺点分析1. 优点2. 缺点九、K-means算法经典应用场景1. 电商/互联网用户分群2. 图像领域图像分割、色彩量化3. 金融行业客户风险分级4. 医疗行业患者分型5. 制造业设备状态分类6. 文本挖掘文本聚类总结The Begin点点关注收藏不迷路前言在数据挖掘的六大核心任务中聚类分析是无监督学习的代表无需人工标注数据就能自动发现数据的隐藏分组规律。而K-meansK-均值作为聚类算法中最经典、最简单、工业界落地最广泛的算法占据了聚类任务80%以上的使用场景。无论是用户分群、图像分割、异常检测还是数据压缩K-means都是首选算法。本文将用通俗语言标准流程图手算案例Python代码带你从零彻底吃透K-means算法小白也能轻松掌握。一、K-means聚类算法核心定义1. 算法定义K-means聚类算法一种基于距离度量的无监督聚类算法核心目标是将n个数据点划分为k个簇使得同一个簇内的数据相似度尽可能高不同簇间的数据相似度尽可能低。K预先设定的聚类数量人为指定means簇内所有数据点的均值簇中心/质心2. 算法核心思想物以类聚通过迭代计算让每个簇的质心到簇内所有点的距离之和最小最终形成紧凑且分离的簇。3. 算法适用场景数据无标签、需要自动分组、数据量中等、簇形状为凸集球形的场景。二、K-means算法核心原理1. 核心原理距离计算K-means使用欧氏距离衡量数据点之间的相似度距离越小相似度越高。二维点公式d ( x , y ) ( x 1 − x 2 ) 2 ( y 1 − y 2 ) 2 d(x,y) \sqrt{(x_1-x_2)^2 (y_1-y_2)^2}d(x,y)(x1​−x2​)2(y1​−y2​)2​2. 核心目标函数损失函数平方误差和(SSE)算法迭代的优化目标越小聚类效果越好S S E ∑ i 1 k ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 SSE \sum_{i1}^k \sum_{x \in C_i} ||x - \mu_i||^2SSEi1∑k​x∈Ci​∑​∣∣x−μi​∣∣2C i C_iCi​第i个簇μ i \mu_iμi​第i个簇的质心均值点3. 核心规则每个数据点归属于距离它最近的质心所在的簇每次迭代后质心更新为簇内所有点的均值三、K-means算法标准执行流程图K-means采用迭代优化思想流程固定且清晰流程图如下四、K-means算法详细执行步骤序号版步骤1确定参数K人为指定要聚成的簇数量如用户分3群、商品分4类。步骤2初始化质心从数据集中随机选择K个数据点作为初始簇中心。步骤3样本分配簇划分遍历所有数据点计算每个点到K个质心的距离将点分配到距离最近的质心对应的簇中。步骤4更新质心对每个簇计算簇内所有数据点的均值作为新的质心。步骤5迭代收敛重复步骤3和步骤4直到质心不再发生变化或达到最大迭代次数。步骤6输出结果最终得到K个稳定的簇完成聚类。五、K-means算法直观案例演示手算理解1. 数据集二维数据点A(1,1)、B(2,1)、C(4,3)、D(5,4)2. 设定K23. 初始质心随机选质心1A(1,1)质心2C(4,3)4. 第一次迭代分配B离A近→簇1D离C近→簇2簇1A,B → 新质心(1.5,1)簇2C,D → 新质心(4.5,3.5)5. 第二次迭代质心发生变化重新分配6. 收敛质心不再变化最终聚类结果簇1A,B簇2C,D六、K-means算法Python代码实现原生库版1. 原生Python实现理解原理importnumpyasnp# 1. 定义数据集Xnp.array([[1,1],[2,1],[4,3],[5,4]])# 2. K-means函数defkmeans(X,k,max_iter100):# 随机初始化质心centroidsX[np.random.choice(len(X),k,replaceFalse)]for_inrange(max_iter):# 分配样本clusters[[]for_inrange(k)]forxinX:dist[np.linalg.norm(x-c)forcincentroids]cluster_idxnp.argmin(dist)clusters[cluster_idx].append(x)# 更新质心new_centroids[np.mean(c,axis0)forcinclusters]# 收敛判断ifnp.allclose(centroids,new_centroids):breakcentroidsnew_centroidsreturnclusters,centroids# 3. 执行聚类clusters,centroidskmeans(X,k2)print(聚类结果,clusters)print(最终质心,centroids)2. Sklearn库实现工业级fromsklearn.clusterimportKMeansimportnumpyasnp Xnp.array([[1,1],[2,1],[4,3],[5,4]])# 建模kmeansKMeans(n_clusters2,random_state0)labelskmeans.fit_predict(X)# 输出print(聚类标签,labels)print(质心,kmeans.cluster_centers_)七、K值如何确定手肘法轮廓系数法K是人为设定的不能盲目选两种常用确定方法1. 手肘法最常用横轴K值纵轴SSE误差规则误差下降速度突然变缓的点就是最优K2. 轮廓系数法系数范围[-1,1]规则系数越接近1聚类效果越好取最大值对应的K八、K-means算法优缺点分析1. 优点简单易懂原理清晰代码易实现速度快时间复杂度接近线性适合大数据可解释性强结果直观工业界成熟稳定适配场景广2. 缺点K值需要手动指定无法自动学习对初始质心敏感随机选择可能导致局部最优对异常值敏感异常值会严重影响质心只能识别球形簇无法处理不规则形状数据九、K-means算法经典应用场景1. 电商/互联网用户分群高价值用户、普通用户、流失用户分群精准营销、个性化推荐2. 图像领域图像分割、色彩量化把图像像素聚类实现分割、压缩3. 金融行业客户风险分级信用等级、投资偏好分组4. 医疗行业患者分型病症相似患者分组辅助诊疗5. 制造业设备状态分类正常/异常设备分组故障预警6. 文本挖掘文本聚类新闻分类、话题发现总结K-means定义基于距离的无监督聚类算法核心是簇内均值质心。核心原理最小化平方误差SSE通过迭代分配样本、更新质心实现聚类。执行流程定K→初始化质心→分配样本→更新质心→收敛。关键要点K值手动确定、对初始值和异常值敏感、适合球形簇。价值简单高效、应用极广是数据挖掘、机器学习入门必学算法。K-means是聚类算法的基石掌握它就能轻松解决大部分无监督分组类业务问题是数据分析师、算法工程师必备核心技能。The End点点关注收藏不迷路

更多文章