机器学习与数据挖掘
K-Means 聚类分析
将标准化后的定量特征迭代划分为 K 个簇,使簇内更紧、簇间更远,并给出轮廓系数与簇画像。
这篇能回答什么
K-Means 聚类回答的是「这些样本可以分成几类、每一类长什么样」。它是无监督学习:没有预先给定的标签,算法把点分到 K 个簇,使点到所属簇中心的平方距离之和尽量小。StatsX 会先对特征做 Z-score 标准化,再拟合;簇中心再逆变换回原始量纲,便于用面积、单价等业务单位解读。
适合:客户分群、住房/产品画像、市场细分,以及RFM 一类「用几个定量指标把人分开」的探索。本教学示例用面积、楼层、总楼层、单价与总价,把住房分成低总价小户型、低总价大户型与高总价三类。
什么时候不该用
聚类不是因果,也不是分类预测:它不回答「为什么」或「下一套房属于哪一类(有金标准时)」——有标签时应改用随机森林特征重要性或监督模型。编号列、准标识符不能当特征。类别型特征(城区、朝向)不是距离空间里的坐标,不要硬塞进 K-Means。若簇形状不规则或有噪声,层次聚类或 DBSCAN 更合适。轮廓系数接近 0 时,说明边界重叠,不宜把簇名写成铁板一块的「客群真理」。
如何选择方法
先分清你要的是无标签分群、有标签预测还是综合评价排序。K-Means 适合球形、规模相近的簇;层次聚类保留树状合并过程;DBSCAN 按密度找任意形状簇并可标噪声。若目标是给对象打综合分而不是分群,应改用TOPSIS。
K-Means 聚类:≥2 个定量特征,设定 K(默认 3),输出簇中心、频数、轮廓系数与 PCA 散点。
层次聚类:不预设球形假设,用树状图看合并过程,适合中小样本探索 K。
DBSCAN:按邻域密度成簇,可识别噪声点,不必事先指定 K。
SHAP / 随机森林重要性:有因变量时解释「模型用了哪些特征」,不是把样本切成簇。
输入、输出与限制
输入
聚类特征必须是定量变量。聚类数 K 为整数超参数,不是数据列。有效行数必须严格大于 K。
聚类特征:最少 2 个,最多 50 个定量变量。
聚类数 K:整数,范围为 2–20,默认 3。
输出
结果表列:聚类名称、样本频数、占比,以及各特征在簇中心的原始量纲取值。簇名由相对总体均值「偏高/偏低」的前几个特征自动生成;重名时追加「·簇k」。同时输出 PCA 二维散点、簇中心雷达图、样本占比图,以及轮廓系数与文字洞察。
产品限制
拟合前 Z-score 标准化;中心展示为逆标准化后的业务单位。
有效行超过 8000 时随机下采样再拟合(随机种子 42)。
轮廓系数在大样本下会再抽样计算;PCA 散点最多保留约 800 个点。
K-Means 使用固定随机种子与有限次初始化,重复运行同一表应可复现。
这些上限来自 StatsX 实现,不是 SPSS「快速聚类」默认的未标准化欧氏距离设定。
案例
研究问题。 一份房产评价教学表希望按户型与价格把住房分成少数几个可解释的群体,供后续差异定价或客户分群讨论,而不是先指定「学区房 / 改善型」之类标签。
教学示例有效样本量 600,K = 3。特征为面积(平米)、楼层、总楼层、单价(元/平米)、总价(万元)。最大簇 247 套(41.17%),偏向面积小、单价与总价偏低;最小簇 150 套(25.00%),偏向单价与总价偏高。轮廓系数为 0.1967。下载后可按同样五列、K=3 复现本页表格。
在 StatsX 中操作
步骤 1 · 上传表格
打开工作台,将 Excel / CSV / JSON 拖入上传区。本案例使用综合评价 xlsx,确认工作表为「Sheet1」。单文件不超过 20 MB。
步骤 2 · 查看画像与质量
确认五列均为定量,缺失可接受。不要把编号、小区名等定类或 ID 列拖进聚类特征。
步骤 3 · 选择「K-Means 聚类分析」
在算法目录搜索「K-Means」或「聚类」并点选。适合/可用标记仅供参考。
步骤 4 · 指定特征与 K 并运行
聚类特征勾选面积、楼层、总楼层、单价、总价(至少 2 个)。聚类数保持默认 3,或在 2–20 之间按研究需要改。点击运行分析。
步骤 5 · 阅读结果
先看轮廓系数与各簇人数,再读簇中心的原始量纲,最后对照 PCA 散点是否分得开。图若抽样绘制,完整人数以结果表为准。




如何阅读输出
下表由同一份教学示例在 StatsX 中运行 K-Means(K=3)得到。有效样本 600。簇中心是原始量纲:例如最大簇面积中心约 74.97 平米、总价约 240.28 万元;高价簇单价中心约 68075.62 元/平米、总价约 876.13 万元。模型聚类轮廓系数 (Silhouette Score) 为 0.1967。数值介于[-1, 1],越接近1代表簇内越紧密、簇间越分离。 PCA 前两主成分累计解释方差 59.2%。
| 聚类名称 | 样本频数 | 占比 | 面积(平米) | 楼层 | 总楼层 | 单价(元/平米) | 总价(万元) |
|---|---|---|---|---|---|---|---|
| 单价(元/平米)(偏低)、总价(万元)(偏低)·簇1 | 247 | 41.17% | 74.97 | 17.2267 | 20.4534 | 32986.0162 | 240.2814 |
| 单价(元/平米)(偏低)、总价(万元)(偏低)·簇2 | 203 | 33.83% | 153.5719 | 17.3695 | 20.1872 | 26899.4089 | 412.0305 |
| 单价(元/平米)(偏高)、总价(万元)(偏高) | 150 | 25.00% | 132.314 | 16.9067 | 20.9467 | 68075.62 | 876.13 |
左右滑动可查看完整表格
模型聚类轮廓系数 (Silhouette Score) 为 0.1967。数值介于[-1, 1],越接近1代表簇内越紧密、簇间越分离。 PCA 前两主成分累计解释方差 59.2%。




【K-Means聚类】K=3,样本量=600,轮廓系数=0.197(边界重叠较多)。PCA 前两主成分解释方差 38.6% + 20.6% = 59.2%。
解读顺序建议:有效 N 与 K → 轮廓系数(本案例约 0.20,边界重叠较多,分群宜作探索而非铁证)→ 各簇人数是否极端失衡 → 用中心值写业务画像。PCA 只解释约六成方差,散点上的交叉不代表算法失败,而是二维投影损失了信息。簇名中的「偏低/偏高」是相对全样本均值,不是绝对的市场档位。
理论与公式
对每个定量特征做标准化 x'=(x-\bar x)/s 后,K-Means 寻找簇划分 \{C_1,\ldots,C_K\} 与中心 \mu_k,使组内平方和最小:
迭代步骤为:把每个点分给最近的中心,再把中心更新为该簇均值,直至分配稳定或达到迭代上限。轮廓系数对每个点 i 比较簇内平均距离 a_i 与到最近其它簇的平均距离 b_i:
散点图把标准化特征投影到前两个主成分,便于肉眼检查分离程度;累计解释方差低时,二维图会低估或高估重叠。簇中心展示值是标准化空间中的中心经逆变换回到原始列单位。
注意事项
K 是人为设定的。轮廓系数低时应尝试邻近的 K,而不是把 K=3 写成唯一正确分群。
未标准化时,总价(万元)与楼层会因量纲主导距离;StatsX 已标准化,与 SPSS 默认未标准化结果可能不同。
异常值会拉动簇中心。先看分布再决定是否截尾或改用更稳健的方法。
簇标签没有时间或因果含义,不能写成「因为面积小所以被分到低总价簇」。
大样本下拟合与轮廓、散点都会抽样,论文应写明 StatsX 的行数上限与随机种子。
定类变量、ID 列不能作为欧氏距离特征。
常见问题
参考文献
MacQueen, J. Some methods for classification and analysis of multivariate observations[C]//Proceedings of the Fifth Berkeley Symposium on Mathematical Statistics and Probability. 1967.
周志华. 机器学习[M]. 北京: 清华大学出版社, 2016.
Rousseeuw, P. J. Silhouettes: A graphical aid to the interpretation and validation of cluster analysis[J]. Journal of Computational and Applied Mathematics, 1987, 20: 53–65.