K-Means 聚类算法:将餐厅客户分类为 VIP 和普通客户
使用 K-Means 聚类算法将餐厅客户分类为 VIP 和普通客户
问题描述: 假设某餐厅现有 4 个客户,分别编号为 a、b、c、d,这 4 位客户某段时间的平均消费水平分别为 1、2、4、5 万元。请用 K-Means 算法将这 4 个客户聚类为 VIP 客户和普通客户两个类别。
输入形式: 无输入
输出形式:
- 聚类标签:一个列表,表示每个客户所属的类别(0 代表普通客户,1 代表 VIP 客户)。
- 类别中心坐标:一个列表,表示每个类别的中心坐标。
示例输出:
[0 0 1 1]
[[1.5]
[4.5]]
解释:
- 聚类标签为
[0 0 1 1],表示客户 a、b 属于普通客户类别,客户 c、d 属于 VIP 客户类别。 - 类别中心坐标为
[[1.5] [4.5]],表示普通客户的中心坐标为 1.5 万元,VIP 客户的中心坐标为 4.5 万元。
使用 K-Means 算法进行聚类的步骤:
- **初始化类别中心:**随机选择两个点作为初始类别中心。
- **分配客户到类别:**根据每个客户到两个类别中心的距离,将其分配到距离较近的类别。
- **更新类别中心:**计算每个类别中所有客户的平均消费水平,作为新的类别中心。
- 重复步骤 2 和 3,直到类别中心不再发生明显变化。
代码实现:
import numpy as np
from sklearn.cluster import KMeans
# 客户消费水平
customer_spending = np.array([1, 2, 4, 5]).reshape(-1, 1)
# 使用 K-Means 算法进行聚类
kmeans = KMeans(n_clusters=2, random_state=0)
kmeans.fit(customer_spending)
# 聚类标签
labels = kmeans.labels_
# 类别中心坐标
cluster_centers = kmeans.cluster_centers_
# 打印输出
print(f'聚类标签:{labels}')
print(f'类别中心坐标:{cluster_centers}')
结果:
聚类标签: [0 0 1 1]
类别中心坐标: [[1.5]
[4.5]]
结论:
通过 K-Means 聚类算法,将餐厅的 4 个客户成功分类为 VIP 客户和普通客户,并获得了每个客户的聚类标签和聚类的类别中心坐标。这个结果可以帮助餐厅更好地理解客户群体,并制定针对性的营销策略。
原文地址: https://www.cveoy.top/t/topic/ozS9 著作权归作者所有。请勿转载和采集!