机器学习中的K-means算法
·
一、K-means 算法概述
K-means 是一种无监督学习算法,用于将数据集划分为 K 个互不重叠的簇,使得同一个簇内的样本尽可能相似,而不同簇的样本尽可能不同。
相似度通常用欧氏距离衡量,聚类目标是最小化所有簇内样本到其簇中心(质心)的平方距离之和(即 SSE,簇内误差平方和)。
二、算法核心步骤
1.指定簇数 K(需预先给定)。
2.随机初始化 K 个簇中心(质心)。
3.迭代过程:
分配阶段:将每个样本分配到距离最近的质心所在的簇。
更新阶段:重新计算每个簇内所有样本的均值,作为新的质心。
4.重复“分配-更新”直到质心不再变化或达到最大迭代次数。
三、实践案例
1. 数据读取与预处理
data.txt 包含 20 款啤酒的 4 个数值特征:calories(卡路里)、sodium(钠含量)、alcohol(酒精浓度)、cost(成本)。
前两行(列名)被正确识别,name 列作为标识,不参与聚类。
2. 特征提取与标准化
因为四个特征的数值差距过大,若直接使用原始数值,值大的特征会主导距离计算,导致聚类结果偏向高量纲特征。
标准化使每个特征均值为 0、方差为 1,赋予每个特征同等权重。

3. 肘部法则确定最佳 K 值
3.1对 K=1~9 分别运行 K-means,计算每个模型的 SSE(簇内误差平方和)。
3.2.肘部法则:随着 K 增大,SSE 必然下降,但当 K 超过数据中真实存在簇的种类数时,SSE 的下降速度会显著变缓,形成“肘部”点,该点即为最佳 K。

4.应用 K-means 并输出结果
设定 K=3,运行算法,为每行数据分配簇标签(0,1,2)。

四、总结
本次实践实现数据加载 → 标准化 → 肘部法选 K → 聚类 → 结果输出。
通过该实践,可以直观理解 K-means 如何依据多维特征将啤酒自动分组,并借助中心点解读每组特征差异。
更多推荐
所有评论(0)