k-means 聚类的实践实现

Python 中的客户细分

Karolis Urbonas

Head of Data Science, Amazon

关键步骤

  • 数据预处理
  • 选择簇数
  • 在预处理数据上运行 k-means
  • 分析各簇的平均 RFM 值
Python 中的客户细分

数据预处理

我们已完成预处理,并得到两个对象:

  • datamart_rfm
  • datamart_normalized
import numpy as np
datamart_log = np.log(datamart_rfm)

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(datamart_log)

datamart_normalized = scaler.transform(datamart_log)
Python 中的客户细分

确定簇数的方法

  • 可视方法:肘部法则
  • 数学方法:轮廓系数
  • 试验与解读
Python 中的客户细分

运行 k-means

# Import package
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=2, random_state=1)
# Compute k-means clustering on pre-processed data
kmeans.fit(datamart_normalized)
# Extract cluster labels from labels_ attribute
cluster_labels = kmeans.labels_
Python 中的客户细分

分析各簇的平均 RFM 值

# Create a cluster label column in the original DataFrame
datamart_rfm_k2 = datamart_rfm.assign(Cluster = cluster_labels)
# Calculate average RFM values and size for each cluster
datamart_rfm_k2.groupby(['Cluster']).agg({
    'Recency': 'mean',
    'Frequency': 'mean',
    'MonetaryValue': ['mean', 'count'],
}).round(0)
Python 中的客户细分

分析各簇的平均 RFM 值

一个简单的 2 类解的结果:

Python 中的客户细分

让我们练习运行 k-means 聚类!

Python 中的客户细分

Preparing Video For Download...