机器学习学习笔记(七):聚类,KMeans、肘部法与客户分群实战
系列第七篇也是收官篇。前面六篇的算法全都有标签有监督这篇换赛道数据没有答案让算法自己找出结构。KMeans 是无监督学习的第一个算法也是面试里聚类话题下几乎唯一的考点。本篇看完要回答的四个面试题聚类和分类的区别KMeans 的实现流程K 值怎么选肘部法的原理聚类效果怎么评估没有标签用什么指标一、聚类没有老师批改作业的学习回顾概述篇的分类体系有监督学习的样本有特征有标签无监督学习有特征、无标签。聚类就是无监督学习的代表根据样本之间的相似性把样本自动划分到不同的类别簇中。相似性怎么算最常用的是欧氏距离KNN 篇的公式直接复用距离越近的样本越像就归到同一堆。要注意不同的相似度计算方法、不同的聚类准则会得到不同的聚类结果课件那道选择题考的就是这个相似度只能用欧氏距离衡量是错误说法。聚类的目的在没有先验知识的情况下自动发现数据集中的内在结构和模式。典型应用用户画像与广告推荐、新闻聚类、恶意流量识别、图像分割、离群点检测信用卡异常消费、基因片段分析。聚类算法的两个分类维度维度类别按颗粒度粗聚类、细聚类按实现方式KMeans按质心、层次聚类逐层划分、DBSCAN按密度、谱聚类按图论本篇主攻通用性最强的 KMeans。二、KMeans 的实现流程面试背这个K 是事先确定的常数表示最终的聚类类别数。流程四步随机选择 K 个样本点作为初始聚类中心计算每个样本到 K 个中心的距离归到最近中心所在的簇根据每个簇内的样本点重新计算聚类中心取均值新中心与旧中心一致则停止否则回到第 2 步直到收敛一个容易忽略的点KMeans 的训练和预测界限很模糊。第 2 步分配和第 3 步更新中心交替进行本质是在最小化所有样本到其所属中心的距离之和和有监督算法的损失函数 迭代优化是同一个骨架只是没有标签参与。APIfromsklearn.clusterimportKMeans estimatorKMeans(n_clusters5,random_state22,n_init10)y_kmeansestimator.fit_predict(X)n_clusters指定簇数默认 8fit_predict相当于先fit再predict一步拿到每个样本的簇编号。三、聚类效果怎么评估没有标签换一把尺子有监督学习用准确率、F1 对着标准答案打分聚类没有答案只能衡量簇内够不够紧、簇间够不够开。三个指标3.1 SSE误差平方和簇内紧凑度SSE∑i1k∑p∈Ci∥p−mi∥2SSE \sum_{i1}^{k}\sum_{p \in C_i} \left\| p - m_i \right\|^2SSEi1∑k​p∈Ci​∑​∥p−mi​∥2其中CiC_iCi​是第 i 个簇ppp是簇内样本mim_imi​是该簇质心。SSE 越小数据点越接近各自的中心簇内越紧凑。SSE 有个致命特性K 越大 SSE 必然越小。极端情况 K 样本数每个点自成一簇SSE 0但毫无意义。所以不能直接挑 SSE 最小的 K要找下降突然变缓的拐点这就是肘部法。3.2 肘部法Elbow Method找拐点让 K 从 1 迭代到某个上限每次聚类后记录 SSE。SSE 曲线前期陡降、后期平缓形状像手肘拐点肘部对应的 K 就是最佳簇数。直觉拐点之前多分一类能显著变紧拐点之后再加簇只是把本就紧凑的堆再切开收益骤减。3.3 轮廓系数Silhouette Coefficient簇内紧 簇间开对每个样本计算两个值a它到同簇其他样本的平均距离越小越紧和 b它到最近其他簇所有样本的平均距离越小簇间越近。该样本的轮廓系数sb−amax⁡(a,b)s \frac{b - a}{\max(a, b)}smax(a,b)b−a​全体样本轮廓系数的均值在 [-1, 1] 之间越接近 1 越好。它同时考虑了簇内和簇间比只看簇内的 SSE 更全面常和肘部法互相印证。另有 CH 指数Calinski-Harabasz簇间方差与簇内方差之比越大越好计算快适合大数据集快速筛 K。四、实战商场客户分群案例背景商场有 200 个客户的记录含性别、年龄、年收入千美元、消费指数1 到 100商场根据消费行为打的分。需求对客户分群找到业务突破口找出黄金客户。数据没有标签没有这是黄金客户的标注这正是聚类的主场。特征取年收入和消费指数两列importpandasaspdfromsklearn.clusterimportKMeansfromsklearn.metricsimportsilhouette_score,calinski_harabasz_score datasetpd.read_csv(./data/customers/customers.csv)Xdataset.iloc[:,[3,4]]kmeansKMeans(n_clusters5,random_state22,n_init10)y_kmeanskmeans.fit_predict(X)4.1 肘部法和轮廓系数一起上双双指向 K5KSSE轮廓系数1269981.3不可算2181363.60.29693106348.40.4676473679.80.4932544448.50.5539最高637233.80.5398730259.70.5264825012.90.4579922837.00.45021019755.60.4416看 SSE从 K4 到 K5 一步降了 29231K5 到 K6 只降 7215下降率在 K5 处突然变缓肘部就在这。看轮廓系数K5 恰好是全程最高点 0.5539之后单调下滑。两个独立指标给出同一个答案这个 K5 就很可信。CH 指数同 K 下为 247.4作对照。4.2 五个簇长什么样K5 时各簇质心年收入消费指数与客户数簇质心客户数业务解读0(88.2, 17.1)35收入高但消费低守财型需要精准触达1(86.5, 82.1)39收入高消费高黄金客户2(55.3, 49.5)81收入中等消费中等基本盘人数最多3(26.3, 20.9)23收入低消费低价格敏感型4(25.7, 79.4)22收入低但消费高年轻冲动型年龄中位数偏低聚类结果一眼可见五团。最有商业价值的是右上角的黄金客户群39 人商场可以对他们做会员深度运营而左上角的守财型收入高、消费低是潜在转化对象值得专门设计营销策略。聚类产出的不是准确率而是可执行的业务分组这是无监督学习和有监督学习在产出形态上的本质区别。五、易错点聚类没有准确率可言没有标签就没有对错评估只能用 SSE、轮廓系数、CH 这类内部指标或有可靠外部参照时用外部指标KMeans 对初始中心敏感随机选的初始中心不好可能收敛到局部最优bad center 导致歪的结果。sklearn 默认用 k-means 优化初始点选取并用n_init跑多轮取最优复现实验必须固定random_stateKMeans 假设簇是凸形球状且大小相近对长条形、环形、密度差异大的簇效果差那些场景该用 DBSCAN 或谱聚类特征量纲差异大时必须标准化KMeans 建立在距离上收入最大 137和消费指数最大 99量纲接近所以本例直接用了换成年收入 vs 存款元这种差距悬殊的组合不做标准化等于让存款独裁。KNN 篇的结论在这里同样成立肘部法的肘不总是清晰有些数据 SSE 曲线平滑无拐点这时以轮廓系数为主或直接从业务角度定 K比如商场预设营销方案就 4 档n_init保持默认即可新版 sklearn 默认 10 或 auto自己设成 1 会放大初始中心敏感性六、知识清单聚类无监督按相似性常用欧氏距离自动分簇相似度准则不同结果不同分类维度颗粒度粗/细实现方式KMeans 按质心、层次、DBSCAN 按密度、谱按图论KMeans 四步定 K、随机选中心、最近距离分配、均值更新中心、迭代至收敛APIKMeans(n_clusters5)fit_predict一步出簇编号SSE簇内误差平方和越小越紧但 K 越大必然越小不能单独用来选 K肘部法SSE 下降突然变缓的拐点即最佳 K轮廓系数[-1, 1]越接近 1 越好同时衡量簇内紧与簇间开CH 指数越大越好计算快七、面试高频问答Q1聚类和分类的区别分类是有监督学习训练样本有标签模型学习特征到标签的映射预测新样本的类别聚类是无监督学习样本没有标签按相似性距离自动把样本分成若干簇类别是算法发现的不是预先定义的。评估方式也不同分类看准确率、F1聚类看 SSE、轮廓系数等内部指标。Q2KMeans 的流程有什么缺点流程随机选 K 个初始中心样本按最近距离分配到簇用簇内均值更新中心交替迭代直到中心不再变化。缺点K 要事先指定且对结果影响大对初始中心敏感可能陷入局部最优只能发现凸形球状簇对异形簇和密度不均的数据失效对噪声和离群点敏感均值会被拉偏。Q3K 值怎么确定肘部法K 从小到大扫描画 SSE 曲线下降突然变缓的拐点即最佳 K轮廓系数扫描 K 取均值最高者。两者经常配合使用互相印证实际业务中还要结合先验知识比如营销方案的分档数。Q4KMeans 和 KNN 是一回事吗经典送分/送命题不是。KNN 是有监督分类算法没有训练过程预测时找 K 个最近邻样本投票KMeans 是无监督聚类算法有迭代训练过程K 是簇的数量。两者只是都用欧氏距离、名字里都有 K其余完全不同。系列完结七篇到这里全部写完。回顾整个系列的主线总览篇知识地图与学习方法概述篇AI/ML/DL、三要素、建模流程、拟合问题线性回归篇损失函数、正规方程与梯度下降、正则化KNN 篇距离、归一化/标准化、交叉验证与网格搜索、分类评估体系决策树篇CART、基尼系数、泰坦尼克生存预测、剪枝集成学习篇Bagging/Boosting、随机森林、OOB聚类篇KMeans、肘部法、轮廓系数、客户分群系列所有案例代码都在本地跑通后才收录数据集和脚本整理在同一个仓库目录里。后续更新深度学习和大模型方向的内容时会在总览篇的目录里继续挂新篇目。感谢追更评论区见。

相关新闻

打不开的微信图片与视频?密语CipherTalk媒体解密与查看完整指南

打不开的微信图片与视频?密语CipherTalk媒体解密与查看完整指南

打不开的微信图片与视频?密语CipherTalk媒体解密与查看完整指南 【免费下载链接】CipherTalk 查无此人? 项目地址: https://gitcode.com/gh_mirrors/ci/CipherTalk 密语CipherTalk是一款现代化的微信聊天记录查看与分析工具,内置微信图…

2026/10/9 9:54:44 阅读更多 →
一次注意力计算到底长什么样?——从 QKV 投影到 KV Cache 的完整拆解

一次注意力计算到底长什么样?——从 QKV 投影到 KV Cache 的完整拆解

一次注意力计算到底长什么样?——从 QKV 投影到 KV Cache 的完整拆解摘要:本文从单个 Token 的输入出发,逐段拆解 Transformer 中一次注意力计算的完整链路:QKV 投影、缩放点积打分、因果掩码、Softmax 归一、加权求和&#xff0c…

2026/10/8 7:24:11 阅读更多 →
沙发垫填充选型复盘:羽绒、45D 与 60D 如何组合

沙发垫填充选型复盘:羽绒、45D 与 60D 如何组合

沙发垫填充选型复盘:羽绒、45D 与 60D 如何组合 问题 “羽绒一定比海绵舒服吗?”这个问题把三个变量混在了一起:柔软度、包裹感和支撑性。只换一个材料,往往无法得到稳定结论。 方案 当前常用方案可拆为:方案主要感受适…

2026/10/9 8:51:30 阅读更多 →

最新新闻

智能客服系统落地指南:从FAQ到RAG的工程实践与避坑

智能客服系统落地指南:从FAQ到RAG的工程实践与避坑

简介:面向政府、企业及金融机构客服系统规划者、产品经理和技术人员的智能客服系统解决方案PDF文档,重点解决移动互联网时代全渠道服务响应慢、知识库构建周期长、人工客服成本高等难题。内容基于中科汇联三千余家行业客户的交付运维经验,系统…

2026/10/9 9:55:18 阅读更多 →
2024五一数学建模C题:基于LSTM与XGBoost的用户行为预测建模实战

2024五一数学建模C题:基于LSTM与XGBoost的用户行为预测建模实战

简介:这是一份2025年五一数学建模竞赛C题的完整参赛作品,内容聚焦社交媒体平台用户行为预测与内容推荐优化。作者基于2024年7月中旬的用户与博主互动数据,系统求解四个子问题:用LSTM模型预测博主新增关注数;用LSTM结合…

2026/10/9 9:55:18 阅读更多 →
用友T6凭证批量导入全流程:解决辅助核算导入失败问题

用友T6凭证批量导入全流程:解决辅助核算导入失败问题

简介:本资源是一份面向企业财务信息化人员、用友T6系统实施顾问及ERP二次开发工程师的实操型技术指南,聚焦解决多源电子凭证批量导入难题,尤其适用于需处理带供应商往来等辅助核算的复杂凭证场景。文档以完整流程为主线,覆盖基础数…

2026/10/9 9:55:18 阅读更多 →
k-means-LSTM组合预测:多输入多输出时序建模实战

k-means-LSTM组合预测:多输入多输出时序建模实战

简介:本资源是一份面向具备Python编程与机器学习基础的研发人员、数据科学家及进阶学习者的时间序列预测实战项目,聚焦k均值聚类与LSTM深度结合的多输入多输出组合建模方法,有效提升能源管理、气象预测、金融分析等场景下的预测精度与鲁棒性。…

2026/10/9 9:55:18 阅读更多 →
符号回归实战:用遗传编程从噪声数据中发现可解释数学公式

符号回归实战:用遗传编程从噪声数据中发现可解释数学公式

简介:本资源是一份面向计算机科学研究人员、机器学习爱好者及进化计算初学者的符号回归实践指南,聚焦遗传编程(GP)在非线性数学表达式发现与建模中的系统实现与优化。内容涵盖GP基础框架搭建、精英主义策略、自定义遗传算子等增强…

2026/10/9 9:55:18 阅读更多 →
php正则表达式学习笔记

php正则表达式学习笔记

前言 先说一件容易混淆的事:PHP 里的「正则表达式」其实分两套历史,一套是已经消失的 POSIX 扩展,一套是现在唯一在用的 PCRE。POSIX 那套函数(ereg()、eregi()、ereg_replace()、eregi_replace()、split()、spliti()、sql_regcas…

2026/10/9 9:54:17 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →