1. K-Means聚类算法概述
K-Means是数据挖掘和机器学习领域最经典的聚类算法之一,它通过迭代计算将数据点划分到K个簇中,使得每个簇内的数据点尽可能相似,而不同簇间的数据点尽可能不同。这个算法在客户分群、图像分割、异常检测等场景都有广泛应用。
注意:K-Means对初始质心的选择非常敏感,不同初始质心可能导致完全不同的聚类结果。这也是为什么在实际应用中我们常会采用K-Means++等改进算法来优化初始质心选择。
算法核心流程分为四个步骤:
- 随机选择K个初始质心(本例中K=3)
- 计算所有数据点到质心的距离,将每个点分配到最近的质心所在簇
- 重新计算每个簇的质心(取簇内所有点的均值)
- 重复步骤2-3直到质心不再变化或达到最大迭代次数
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 问题描述与数据准备
我们有以下8个二维数据点:
- A1(2,10)
- A2(2,5)
- A3(1,2)
- B1(5,8)
- B2(7,5)
- B3(6,4)
- C1(8,4)
- C2(4,9)
初始质心设为:
- μ₁⁰ = A1 = (2,10)
- μ₂⁰ = B1 = (5,8)
- μ₃⁰ = C1 = (8,4)
距离度量采用欧式距离公式:
d = √[(x₁-x₂)² + (y₁-y₂)²]
3. 第一轮迭代详解
3.1 计算各点到质心的距离
我们首先计算每个数据点到三个初始质心的距离:
| 点 | 到μ₁⁰(2,10) | 到μ₂⁰(5,8) | 到μ₃⁰(8,4) | 最近质心 |
|---|---|---|---|---|
| A1(2,10) | 0.000 | 3.606 | 8.485 | μ₁⁰ |
| A2(2,5) | 5.000 | 4.243 | 6.083 | μ₂⁰ |
| A3(1,2) | 8.062 | 7.211 | 7.280 | μ₂⁰ |
| B1(5,8) | 3.606 | 0.000 | 5.000 | μ₂⁰ |
| B2(7,5 |
