KMeans用户聚类效果关键在数据清洗、特征工程与业务解读:需清洗去重/补缺/标准化时间,构造活跃度、价值度、偏好倾向等业务特征并标准化;K值选择需结合肘部图、轮廓系数及业务预期;可视化须PCA降维;结果须映射为“流失风险新客”等业务标签并协同运营校验。

用KMeans对用户做聚类,核心是把行为或属性相似的用户自动分组,关键不在算法本身,而在数据准备、特征工程和结果解读。下面直接说清楚实操中真正影响效果的几个环节。
数据清洗与用户特征构造
原始用户数据往往杂乱,比如订单表里有重复下单、缺失设备信息、时间戳格式不统一。先做基础清洗:去重、填充空值(如用众数补“城市”)、标准化时间字段。更重要的是构造有意义的特征——不能只用“注册天数”或“总消费”,要组合出业务语义明确的指标:
- 活跃度:近7天登录次数 / 近30天打开App频次
- 价值度:累计支付金额 + 平均客单价 × 复购率
- 偏好倾向:点击过“运动鞋”类目次数占比、在晚间(20–23点)下单比例
注意:所有数值型特征必须做标准化(如StandardScaler),否则“消费金额”这种大数值会主导距离计算,让“登录频次”几乎失效。
K值选择不能只看肘部图
肘部法(Elbow Method)容易误判,尤其当曲线拐点不明显时。建议三步交叉验证:
立即学习“Python免费学习笔记(深入)”;
- 画肘部图,观察下降趋势变缓的位置(比如k=3到k=4下降明显,k=4到k=5几乎持平)
- 计算轮廓系数(silhouette_score),选系数最高对应的k(通常>0.5算合理分离)
- 结合业务逻辑反推:比如你预期划分“高价值沉默用户”“价格敏感新人”“高频复购老客”,那k=3或k=4更易解释,强行取k=8反而难落地
二维可视化要降维再画
KMeans本身不限维度,但人眼只能看二维。直接用前两个原始特征画图,往往看不出聚类结构。正确做法是先用PCA降到2D,再绘图:
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
PCA后保留90%以上方差(查看explained_variance_ratio_.cumsum()),确保投影不失真。图上用不同颜色标出每个簇,再叠加各簇中心点(用X标记),能快速看出簇间距离和离散程度。如果多个簇严重重叠,说明特征区分度不够或k值偏大。
聚类结果要回贴用户标签做业务解读
模型输出只是数字标签(0/1/2…),真正价值在于翻译成业务语言。例如:
- 簇0:平均年龄24岁、70%用安卓、85%近一周无登录 → 命名为“流失风险新客”
- 簇1:客单价中位数¥398、月均下单2.7次、62%收货地址为写字楼 → 定义为“职场品质人群”
这一步必须拉上运营或产品同事一起校验——如果命名和实际用户画像偏差大,说明特征没抓准,得回头调整特征构造逻辑。
基本上就这些。KMeans不复杂,但容易忽略特征质量和业务对齐。跑通流程后,重点不是换更多算法,而是持续用新数据验证各簇的稳定性,比如每月重聚类一次,看“高价值沉默用户”是否真的在变少。










