24 客户分群
系列进度
Scikit-learn 入门 · 第 24 / 24 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
客户分群不是把 K-Means 跑完就结束。你需要解释每个群体的特征、规模、价值和行动建议,结果才有业务意义。
我会给每个簇起一个临时名字,并写出推荐动作。比如高收入高消费、低收入低消费、潜力客户。不能命名的簇,先别急着上线。
在商业领域,客户分群是一项重要的技术,能够帮助企业更好地理解客户行为,以便进行市场营销、产品推荐和服务优化等。本节将介绍如何使用 Scikit-Learn 框架进行客户分群。我们将采用 K-Means 聚类算法来实现这一目标。
1. 客户分群背景
客户分群的目的是将具有相似特征的客户分到同一组。这可以帮助企业了解不同客户群体的需求,从而制定有针对性的营销策略。例如,某些客户可能更倾向于高端产品,而另一些客户可能对价格敏感。
2. 数据准备
我们将使用一个示例数据集,假设这是一个包含客户信息的 CSV 文件,字段包括:
CustomerID:客户IDAge:客户年龄AnnualIncome:年收入SpendingScore:消费得分
我们将使用 Scikit-Learn 的 K-Means 聚类算法,首先需要加载和预处理数据。
2.1 加载数据
以下是加载数据的代码示例:
import pandas as pd
# 加载客户数据集
data = pd.read_csv('customer_data.csv')
# 显示数据的前5行
print(data.head())
2.2 数据预处理
在数据预处理阶段,我们需要选择合适的特征并进行标准化处理,以确保聚类效果的准确性。
from sklearn.preprocessing import StandardScaler
# 选择要聚类的特征
X = data[['Age', 'AnnualIncome', 'SpendingScore']]
# 标准化特征
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
3. K-Means 聚类
3.1 选择聚类数
在 K-Means 中,选择合适的聚类数非常重要。我们可以使用肘部法则(Elbow Method)来帮助我们选择。
读这篇时,可以把「客户分群背景 -> 数据准备 -> 加载数据 -> 数据预处理」当成一条检查线:先看对象、路径和证据,再回到案例、代码或指标里复查。
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 肘部法则
wcss = []
for i in range(1, 11):
kmeans = KMeans(n_clusters=i, random_state=42)
kmeans.fit(X_scaled)
wcss.append(kmeans.inertia_)
# 绘制肘部法则曲线
plt.plot(range(1, 11), wcss)
plt.title('Elbow Method')
plt.xlabel('Number of clusters')
plt.ylabel('WCSS')
plt.show()
通过查看肘部法则曲线,我们可以找到一个折点位置,从而选择 K 值。
3.2 应用 K-Means 进行聚类
一旦确定了聚类数,我们就可以使用 K-Means 进行聚类。
# 假设通过肘部法则我们选择了 4 个聚类
kmeans = KMeans(n_clusters=4, random_state=42)
data['Cluster'] = kmeans.fit_predict(X_scaled)
3.3 可视化聚类结果
我们可以使用散点图来可视化聚类结果。这里我们将只使用前两个特征进行可视化。
《客户分群》适合边看图边读正文。先确认问题和判断标准,再看概念解释与练习步骤,信息会更容易连成一条线。
plt.figure(figsize=(10, 6))
plt.scatter(data[data['Cluster'] == 0]['AnnualIncome'], data[data['Cluster'] == 0]['SpendingScore'], s=100, label='Cluster 1')
plt.scatter(data[data['Cluster'] == 1]['AnnualIncome'], data[data['Cluster'] == 1]['SpendingScore'], s=100, label='Cluster 2')
plt.scatter(data[data['Cluster'] == 2]['AnnualIncome'], data[data['Cluster'] == 2]['SpendingScore'], s=100, label='Cluster 3')
plt.scatter(data[data['Cluster'] == 3]['AnnualIncome'], data[data['Cluster'] == 3]['SpendingScore'], s=100, label='Cluster 4')
# 绘制聚类中心点
plt.scatter(kmeans.cluster_centers_[:, 1], kmeans.cluster_centers_[:, 2], s=300, c='yellow', label='Centroids')
plt.title('Customer Segmentation')
plt.xlabel('Annual Income')
plt.ylabel('Spending Score')
plt.legend()
plt.show()
4. 结果分析与应用
通过客户分群,我们能够识别出不同的客户群体。企业能够针对每个群体制定不同的市场营销策略。
例如:
- 针对消费得分高且年收入高的客户群体,企业可以推出高端产品推荐。
- 对于年收入较低但消费得分高的客户,可以考虑提供优惠和促销活动来增强客户的忠诚度。
读到这里,可以把《客户分群》整理成一张复盘表:先说清主线,再拿一个小任务检查结果。
读完《客户分群》后,可以先挑一个小样例走完整流程,再判断哪些步骤已经能独立完成。
小结
在本节中,我们详细介绍了如何利用 Scikit-Learn 框架实现客户分群。通过 K-Means 聚类算法,我们能够将客户根据特征分成多个群体,从而为后续的商业决策提供有力支持。
在下节中,我们将继续探讨如何应用集成学习方法来提升模型性能。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
客户分群适合谁读?
这是 Scikit-learn 入门 系列第 24 / 24 篇,适合正在学习Scikit-learn 入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇Scikit-learn 入门教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读