机器学习进阶(23):K-means聚类

第23篇:K-means 聚类------当数据没有标签时,模型还能学什么

在前面的文章里,我们一直在做一件事:

给模型数据 + 标签,然后让模型学习它们之间的关系。

比如:

预测房价(回归)

判断垃圾邮件(分类)

识别手写数字(分类)

这些任务都有一个共同特点:

数据有答案。

但现实世界里,还有很多情况是这样的:

我们只有数据,没有答案。

比如:

用户行为数据

客户消费数据

网页访问数据

商品浏览路径

评论文本集合

没有人告诉你:

谁属于哪一类

那模型还能学什么?🤔

答案是:

它可以自己发现结构。

这类学习方式叫:

无监督学习(Unsupervised Learning)

而 K-means,就是最经典的入门算法之一。


1. 什么是聚类?

先从最直觉的问题开始。

假设你有一批用户数据:

年龄

收入

消费频率

但你不知道他们属于什么群体。

你只是感觉:

可能有几类人

比如:

学生群体

年轻白领

高收入人群

这时候你希望模型帮你回答一个问题:

这些人自然可以分成几类?

这就是聚类在做的事情:

自动把相似的数据分到同一组里

没有标签

没有答案

只有结构

模型要自己找。

这就是 K-means 的任务。


2. K-means 在做什么?

一句话版本:

K-means 会把数据分成 K 组,让每组内部尽量相似。

关键词是:

组内相似度最大

或者换句话说:

组内距离最小

比如:

下面这些点:

复制代码
● ● ● ●

▲ ▲ ▲ ▲

■ ■ ■ ■

你一眼就能看出来:

它们明显分成三类

K-means 做的事情就是:

让机器也能做到这一点 👀


3. K-means 名字里的 K 是什么意思?

K 就是:

你希望分成多少类

比如:

K = 2 → 分两类

K = 3 → 分三类

K = 5 → 分五类

所以它叫:

K-means

意思是:

K 个中心点的聚类算法


4. K-means 的核心思路其实非常直觉

整个算法只有三步:

第一步:

随机选 K 个中心点

第二步:

让每个样本选择离自己最近的中心

第三步:

重新计算每个类别的中心点

然后重复:

第二步 + 第三步

直到中心不再变化

结束 ✅

听起来是不是非常简单?

但神奇的是:

它真的很好用。


5. 什么叫"中心点"?

中心点其实就是:

这一类数据的平均位置

比如:

三个点:

复制代码
(2,3)
(3,4)
(4,5)

它们的中心大概是:

复制代码
(3,4)

这就是:

mean(均值)

所以算法叫:

K-means

意思就是:

K 个均值中心


6. 为什么这个方法有效?

因为它在做一件非常合理的事情:

不断优化下面这个目标:

让每个点离自己的类别中心尽量近

换句话说:

让同类更像同类

异类更不像异类

这其实就是:

聚类的本质目标 🎯


7. 用一个真实一点的例子理解它

假设我们有这些用户:

用户 年龄 月消费
A 20 500
B 22 600
C 21 550
D 40 3000
E 42 2800
F 41 3200

你不用机器也能看出来:

它们明显分两类:

年轻低消费

中年高消费

K-means 会自动找到:

两个中心:

复制代码
(21, 550)
(41, 3000)

然后完成分类。


8. K-means 为什么要反复更新中心?

因为一开始:

中心是随机选的 🎲

可能选得不好。

比如:

第一次选的是:

复制代码
(20,500)
(40,3000)

还不错。

但也可能选成:

复制代码
(22,600)
(21,550)

这就很糟糕。

所以算法要反复更新中心:

不断修正

直到稳定下来。


9. K-means 的完整流程(算法版本)

正式一点描述:

步骤如下:

Step 1:

随机选择 K 个中心

Step 2:

计算每个点到中心的距离

Step 3:

分配最近中心

Step 4:

重新计算中心

Step 5:

重复直到收敛

结束。

核心思想只有一句话:

先分组,再修正中心,再重新分组

循环直到稳定。


10. K-means 在优化什么?

它其实在最小化:

所有样本到中心点的距离平方和

也就是:

组内误差平方和

你可以理解为:

让每个点尽量靠近自己的中心

数学上叫:

WCSS(within-cluster sum of squares)

直觉理解:

让每个类别尽量"紧凑"


11. 为什么用"平方距离"而不是普通距离?

原因很简单:

平方距离有两个好处:

第一:

计算方便

第二:

远离中心的点惩罚更大

比如:

距离:

复制代码
1 → 1
2 → 4
5 → 25

远离中心的点会被重点关注。

这让聚类更稳定。


12. K-means 最大的问题:K 怎么选?

这是最经典的问题之一。

K-means 里:

K 是你自己定的

不是模型算出来的。

那怎么办?

最常见方法叫:

肘部法则(Elbow Method)

思路是:

画一条曲线:

横轴:

K

纵轴:

误差平方和

像这样:

复制代码
K=1 误差很大
K=2 明显下降
K=3 继续下降
K=4 稍微下降
K=5 几乎不变

拐点位置:

就是最合适的 K

像手肘一样的位置 🦴

所以叫:

Elbow Method


13. 一个可以直接运行的例子

可以直接运行:

python 复制代码
from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt

# 构造数据
X = np.array([
    [1,2],
    [1,4],
    [1,0],
    [10,2],
    [10,4],
    [10,0]
])

# 建立模型
kmeans = KMeans(n_clusters=2, random_state=0)

# 训练模型
kmeans.fit(X)

# 查看类别
print("类别标签:")
print(kmeans.labels_)

# 查看中心点
print("中心点:")
print(kmeans.cluster_centers_)

# 可视化
plt.scatter(X[:,0], X[:,1], c=kmeans.labels_)
plt.scatter(
    kmeans.cluster_centers_[:,0],
    kmeans.cluster_centers_[:,1],
    s=200,
    marker='X'
)
plt.show()

运行后你会看到:

数据自动分成两组

中心点也被计算出来。

非常直观 📊


14. K-means 最常见应用场景

现实世界里它非常常见:

用户分群

比如:

高价值用户

潜在用户

流失风险用户

客户画像

比如:

价格敏感型

品质优先型

品牌忠诚型

推荐系统预处理

比如:

把用户分群后再推荐

图像压缩

比如:

减少颜色数量 🎨

异常检测

比如:

离群点识别


15. K-means 的优点

总结一下:

优点非常明显:

简单 ✔️

快速 ✔️

容易实现 ✔️

可解释性强 ✔️

适合大规模数据 ✔️

所以它几乎是:

无监督学习第一站


16. 但它也有局限

它不是万能算法。

最大问题包括:

必须提前知道 K

对初始中心敏感

容易陷入局部最优

只能发现"球形结构"

比如:

它擅长发现:

复制代码
● ● ●
● ● ●

不擅长发现:

复制代码
🌙 弯曲结构

17. K-means 和分类有什么本质区别?

这是一个非常值得写进文章里的总结点。

分类:

有答案

监督学习

聚类:

没答案

无监督学习

换句话说:

分类是在学规则

聚类是在发现结构

这是机器学习里的一个重要分界线 ⚖️


18. 这一篇真正想让读者记住的一句话

如果要压缩成一句话:

K-means 的目标是把数据分成 K 组,让每一组内部尽量相似。

它通过:

不断更新中心点

来完成这件事情。

简单,但非常经典。

相关推荐
啦啦啦_99992 小时前
2. KNN算法之 分类&回归API实现
算法
薛定猫AI2 小时前
【深度解析】GPT-5.5 的工程化跃迁:从“会答题”到“能交付”的 AI 工作流升级
人工智能·gpt
视***间2 小时前
小而强筑内核,智无界启新程 —— 视程空间全栈硬件产品矩阵,赋能千行百业边缘智能升级
人工智能·矩阵·边缘计算·视程空间·终端算力·nvidia jetson
IT_陈寒2 小时前
SpringBoot自动配置的坑差点没把我埋了
前端·人工智能·后端
Zzj_tju2 小时前
大语言模型技术指南:Function Calling、Tool Use、Agent 框架的工作机制与参数要点
大数据·人工智能·语言模型
光影少年2 小时前
高级前端需要学习那些东西?
前端·人工智能·学习·aigc·ai编程
怕浪猫2 小时前
从 Openclaw 、codex、Claude code 爆火看 AI Agent 冲击:只会调 API 的程序员,出路在哪里?🤔🤔🤔
人工智能
神州数码云基地2 小时前
告别传统OCR瓶颈,DeepSeek-OCR如何重塑文档智能?
人工智能·llm·ocr·大语言模型·deepseek
mjhcsp2 小时前
根号快速计算牛顿迭代法
开发语言·c++·算法·迭代法