手撕 K-Means

1. K-means 的原理

K-means 是一种经典的无监督学习算法,用于将数据集划分为 kk 个簇(cluster)。其核心思想是通过迭代优化,将数据点分配到最近的簇中心,并更新簇中心,直到簇中心不再变化或达到最大迭代次数。

算法步骤:

  1. 初始化: 随机选择 kk 个数据点作为初始簇中心(centroids)。

  2. 分配步骤(Assignment Step): 将每个数据点分配到距离最近的簇中心。

  3. 更新步骤(Update Step): 重新计算每个簇的中心(即簇内所有数据点的均值)。

  4. 迭代: 重复步骤 2 和 3,直到簇中心不再变化或达到最大迭代次数。

2. K-means 的公式推导

目标函数

K-means 的目标是最小化所有数据点到其所属簇中心的距离平方和(即误差平方和,SSE):

其中:

  • k:簇的数量。

  • Ci​:第 i 个簇。

  • x:数据点。

  • μi:第 i 个簇的中心。

分配步骤

将每个数据点 x 分配到距离最近的簇中心:

更新步骤

重新计算每个簇的中心 μi,即簇内所有数据点的均值:

其中 ∣Ci∣ 是第 i 个簇中数据点的数量。

3. 手撕代码实现

下面是用 Python 实现 K-means 算法的代码:

相关推荐
stereohomology5 小时前
实战微调排版细节:豆包Seed 2.1 Turbo 不弱于GLM5.2?
人工智能·大模型·对比·why不coding
renhongxia15 小时前
世界模型的四个商业场景:自动驾驶、机器人、内容产业与工业仿真
人工智能·机器人·自动驾驶
stormzhangV6 小时前
AI 的玩法,该做减法了
人工智能·ai编程·claude
wanderist.6 小时前
Lambda表达式在算法竞赛中的应用
java·开发语言·算法
IT_陈寒6 小时前
SpringBoot自动配置坑了我一周,原来问题这么蠢!
前端·人工智能·后端
糯米导航6 小时前
实践教程|搭建电商 AI 无限画布,实现百款商品主图自动化批量生成
运维·人工智能·自动化
稚南城才子,乌衣巷风流6 小时前
支配树(Dominator Tree)详解:概念、算法与应用
算法
朴马丁6 小时前
从制造到智造:PLM如何赋能企业研发创新
大数据·运维·人工智能·食品行业·流程行业plm·化工新材料行业·新能源材料行业
武子康7 小时前
GAIA、Cosmos、Genie 等视频模型纷纷自称"世界模型",为什么说视觉逼真度不构成决策证据?
人工智能·llm·agent
上海锝秉工控7 小时前
普通编码器:基础信号处理与数据转换核心岗
人工智能·信号处理