当前位置: 首页 > news >正文

机器学习第十六讲:K-means → 自动把超市顾客分成不同消费群体

机器学习第十六讲:K-means → 自动把超市顾客分成不同消费群体

资料取自《零基础学机器学习》。
查看总目录:学习大纲

关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南


K-means是一种用于自动将相似数据分组的无监督学习算法。下面用超市顾客分组的例子详细讲解:

一、核心原理(类似整理杂货铺)

假设你有一堆散落的商品要分类摆放,但不知道应该分几类。K-means的解决步骤是:

  1. 随机选位置:先猜测分3类,在卖场随机选3个货架位置作为初始"中心点" [1-3][3]
  2. 就近摆放:把所有商品摆到离它最近的货架周围,形成3个临时区域 [^3]
  3. 调整中心:在每个临时区域中心放个新货架,替代原来的随机位置 [^3]
  4. 重复优化:根据新货架位置重新摆放商品,直到货架位置不再明显变化 [^3]
随机选3个中心点
商品归类到最近中心
计算每个类的新中心
中心是否变化?
得到最终分类

二、超市顾客分群实战

案例背景:某超市收集了200名顾客的:

  • 年收入(万元)
  • 消费分数(0-100分,综合消费金额和频率)[^1]
数据准备
选择特征
确定K值
聚类分析
  1. 选择关键特征:这里选年收入和消费分数,就像选"尺子"来度量顾客差异 [^1]

    示例数据片段:
    | 顾客ID | 年收入 | 消费分数 |
    |--------|--------|----------|
    | 001 | 38 | 82 |
    | 002 | 43 | 78 |

  2. 确定分组数量K:用手肘法找最佳分组数 [^3]

    • 原理:计算不同K值时的总误差(各点到中心的距离和)
    • 图示:当误差下降变缓时,就像人手臂的"肘关节",选这个K值
    # 代码示例(Python)
    cost = []
    for k in 110:用K-means分组记录当前总误差
    plt.plot(cost)  # 找肘部拐点
    
  3. 生成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]参见客户聚类案例代码(《零基础学机器学习》第十章教学用例)

http://www.xdnf.cn/news/528265.html

相关文章:

  • 三维云展展示效果升级​
  • 5个开源MCP服务器:扩展AI助手能力,高效处理日常工作
  • 【11408学习记录】考研英语辞职信写作三步法:真题精讲+妙句活用+范文模板
  • 在linux平台下利用mingw64编译windows程序
  • UE5在Blueprint中判断不同平台
  • [架构之美]从PDMan一键生成数据库设计文档:Word导出全流程详解(二十)
  • C语言之 比特(bit)、字节(Byte)、字(Word)、整数(Int)
  • ABAP实战案例--获取当前数据由哪个用户锁住
  • 微前端记录
  • MFC 编程中 OnInitDialog 函数
  • YOLOV3 深度解析:目标检测的高效利器
  • vue3与springboot交互-前后分离【验证element-ui输入的内容】
  • w~自动驾驶~合集3
  • Linux内核深入学习(4)——内核常见的数据结构之链表
  • 超小多模态视觉语言模型MiniMind-V 训练
  • Java实现PDF加水印功能:技术解析与实践指南
  • leetcode239 滑动窗口最大值deque方式
  • 阿里云国际站与国内站:局势推进中的多维差异
  • TYUT-企业级开发教程-第四章
  • PyTorch图像建模(图像识别、分割和分类案例)
  • (1-5)Java 常用工具类、
  • 用 CodeBuddy 实现「IdeaSpark 每日灵感卡」:一场 UI 与灵感的极简之旅
  • 【Linux】守护进程
  • 数据中心 智慧机房解决方案
  • 力扣560.和为K的子数组
  • FLASHDB API分析
  • 爬虫攻防战:从入门到放弃的完整对抗史与实战解决方案
  • MacOS安装软件后无法启动报错:“已损坏,无法打开,你应该将它移到废纸篓“
  • MySQL企业版免费开启,强先体验
  • 如何使用VCS+XA加密verilog和spice网表