机器学习第十六讲:K-means → 自动把超市顾客分成不同消费群体
资料取自《零基础学机器学习》。
查看总目录:学习大纲
关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南
K-means是一种用于自动将相似数据分组的无监督学习算法。下面用超市顾客分组的例子详细讲解:
一、核心原理(类似整理杂货铺)
假设你有一堆散落的商品要分类摆放,但不知道应该分几类。K-means的解决步骤是:
- 随机选位置:先猜测分3类,在卖场随机选3个货架位置作为初始"中心点" [1-3][3]
- 就近摆放:把所有商品摆到离它最近的货架周围,形成3个临时区域 [^3]
- 调整中心:在每个临时区域中心放个新货架,替代原来的随机位置 [^3]
- 重复优化:根据新货架位置重新摆放商品,直到货架位置不再明显变化 [^3]
二、超市顾客分群实战
案例背景:某超市收集了200名顾客的:
- 年收入(万元)
- 消费分数(0-100分,综合消费金额和频率)[^1]
选择关键特征:这里选年收入和消费分数,就像选"尺子"来度量顾客差异 [^1]
示例数据片段:
| 顾客ID | 年收入 | 消费分数 |
|--------|--------|----------|
| 001 | 38 | 82 |
| 002 | 43 | 78 |确定分组数量K:用手肘法找最佳分组数 [^3]
- 原理:计算不同K值时的总误差(各点到中心的距离和)
- 图示:当误差下降变缓时,就像人手臂的"肘关节",选这个K值
# 代码示例(Python) cost = [] for k in 1到10: 用K-means分组 记录当前总误差 plt.plot(cost) # 找肘部拐点
生成4个消费群体(当K=4时)[1][2]
- 簇1(蓝):高收入-高消费 → 重点维护的VIP客户
- 簇2(绿):中等收入-高消费 → 高潜力客户
- 簇3(红):低收入-低消费 → 普通客户
- 簇4(青):高收入-低消费 → 需提升消费意愿
三、应用价值与局限
适用场景 ➔ 银行客户分群/新闻主题聚类/市场细分 [^5-3]
优点:简单高效,适合处理大型数据集
缺点:需要人工确定K值,对异常值敏感
生活类比:就像给图书馆散落的书籍分类,先估计大概有几个主题区,不断调整书架位置直到形成自然的图书集群 [^3]
目录:总目录
上篇文章:机器学习第十五讲:决策树全面讲解:像玩"20个问题"游戏猜身份🎮
下篇文章:机器学习第十七讲:PCA → 把100维数据压缩成3D视图仍保持主要特征
[^1-3]《零基础学机器学习》第一章第三节类型划分
[^5-3]《零基础学机器学习》第五章第五节聚类算法
[1][2][^3]参见客户聚类案例代码(《零基础学机器学习》第十章教学用例)