机器学习算法-k-means

今天我们用 「超市顾客分组」 的例子来讲解K-means算法,从原理到实现一步步拆解,保证零基础也能懂!


🛒 例子背景

假设你是超市经理,手上有顾客的以下数据:

顾客ID 每月消费金额(元) 每周到店次数
1 3000 2
2 5000 8
3 3500 3
4 7000 6
5 2000 1

你想把顾客分成 3个群体,分别制定营销策略,该怎么做?


🌟 K-means原理

1. 核心思想

"物以类聚" ------ 让相似特征的顾客自动聚成一类

➡️ 通过计算距离,把数据划分到最近的簇(cluster)

2. 算法步骤

1️⃣ 随机选3个初始中心点 (比如选顾客1/2/3作为初始中心)

2️⃣ 把所有顾客分到最近的中心 (按距离计算)

3️⃣ 重新计算中心点 (取各簇的平均值)

4️⃣ 重复2-3步直到中心点不再变化

3. 距离计算(欧氏距离)

比如顾客4(7000,6)到中心点(5000,8)的距离:
√[(7000-5000)² + (6-8)²] = √(4,000,000 + 4) ≈ 2000


🎯 具体分步演示

初始随机中心

  • 中心1:顾客1 (3000,2)

  • 中心2:顾客2 (5000,8)

  • 中心3:顾客3 (3500,3)

第一轮分组

  1. 顾客4到三个中心的距离:

    • 到中心1:√(7000-3000)²+(6-2)² ≈ 4000

    • 到中心2:≈2000

    • 到中心3:≈3504

      → 归到中心2的簇

  2. 同理分组其他顾客

重新计算中心

  • 中心2的新位置 = (5000+7000)/2=6000, (8+6)/2=7 → (6000,7)

重复直到稳定(通常3-5轮)


🛠️ Python代码实现

python 复制代码
from sklearn.cluster import KMeans
import numpy as np

# 准备数据
X = np.array([
    [3000, 2],
    [5000, 8],
    [3500, 3],
    [7000, 6],
    [2000, 1]
])

# 创建模型(分3类)
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)

# 查看结果
print("簇中心点坐标:\n", kmeans.cluster_centers_)
print("各顾客所属簇:", kmeans.labels_)

# 预测新顾客
new_customer = np.array([[4000, 4]])
print("新顾客所属簇:", kmeans.predict(new_customer))

输出示例

复制代码
簇中心点坐标:
 [[ 3333.33   2.  ]  # 低频低消费组
 [ 6000.     7.  ]  # 高频高消费组
 [ 2000.     1.  ]] # 低频低消费组(可能异常值)
各顾客所属簇: [0 1 0 1 2]
新顾客所属簇: [0]

📊 结果解读

簇号 特征 营销策略
0 中等消费,低频到店 发送折扣券刺激消费
1 高消费,高频到店 推送VIP专属福利
2 低消费,低频到店 发送新商品试用邀请

🔍 关键细节

  1. 如何选K值?

    • 肘部法则(Elbow Method):观察不同K值时误差下降的拐点
  2. 特征标准化很重要!

    • 消费金额(3000-7000)和到店次数(1-8)量纲不同,需先标准化:

      python 复制代码
      from sklearn.preprocessing import StandardScaler
      X_scaled = StandardScaler().fit_transform(X)
      复制代码
  3. 算法局限性

    • 对初始中心敏感(可能局部最优)→ 多跑几次选最好结果

    • 只适合球形分布数据(对复杂形状需用DBSCAN等算法)


🌰 实际应用场景

  1. 用户画像:电商用户分群

  2. 图像压缩:用16种颜色代表所有像素(K=16)

  3. 异常检测:离所有中心点远的点可能是异常

相关推荐
是一个Bug8 小时前
Agent(智能体)应用 的入门学习路径
学习·机器学习
kkeeper~9 小时前
0基础C语言积跬步之数据在内存中的存储
c语言·数据结构·算法
wabs66610 小时前
关于贪心算法的一些自我总结【力扣45.跳跃游戏II】【灵感来源:代码随想录】
算法·贪心算法·复盘
盖小雅10 小时前
自动化排班如何破解劳动法合规难题:从规则冲突到可追溯的排班表
大数据·运维·机器学习·自动化
2401_8769641310 小时前
【湖北专升本】2026湖北专升本真题PDF+备考资料汇总
数据结构·人工智能·经验分享·深度学习·算法·计算机视觉
嗝o゚11 小时前
CANN GE 算子融合——融合算法与调度策略
算法·昇腾·cann·ge
小江的记录本11 小时前
【JVM虚拟机】垃圾回收GC:垃圾回收算法:标记-清除、标记-复制、标记-整理、分代收集(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·安全·面试
踏歌~12 小时前
YA期货准备:0 了解期货
机器学习
Ulyanov13 小时前
用声明式语法重新定义Python桌面UI:QML+PySide6现代开发入门(一)
开发语言·python·算法·ui·系统仿真·雷达电子对抗仿真
数据科学小丫13 小时前
特征工程处理
人工智能·算法·机器学习