Triển khai k-means thực tế

Phân khúc khách hàng bằng Python

Karolis Urbonas

Head of Data Science, Amazon

Các bước chính

  • Tiền xử lý dữ liệu
  • Chọn số cụm
  • Chạy k-means trên dữ liệu đã tiền xử lý
  • Phân tích RFM trung bình theo cụm
Phân khúc khách hàng bằng Python

Tiền xử lý dữ liệu

Chúng ta đã hoàn tất tiền xử lý và có hai đối tượng:

  • 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)
Phân khúc khách hàng bằng Python

Cách xác định số cụm

  • Phương pháp trực quan – tiêu chí khuỷu tay
  • Phương pháp toán – hệ số silhouette
  • Thử nghiệm và diễn giải
Phân khúc khách hàng bằng Python

Chạy k-means

# Import package
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=2, random_state=1)
# Tính k-means trên dữ liệu đã tiền xử lý
kmeans.fit(datamart_normalized)
# Lấy nhãn cụm từ thuộc tính labels_
cluster_labels = kmeans.labels_
Phân khúc khách hàng bằng Python

Phân tích RFM trung bình theo cụm

# Tạo cột nhãn cụm trong DataFrame gốc
datamart_rfm_k2 = datamart_rfm.assign(Cluster = cluster_labels)
# Tính RFM trung bình và kích thước từng cụm
datamart_rfm_k2.groupby(['Cluster']).agg({
    'Recency': 'mean',
    'Frequency': 'mean',
    'MonetaryValue': ['mean', 'count'],
}).round(0)
Phân khúc khách hàng bằng Python

Phân tích RFM trung bình theo cụm

Kết quả của nghiệm 2 cụm đơn giản:

Phân khúc khách hàng bằng Python

Hãy luyện tập chạy k-means!

Phân khúc khách hàng bằng Python

Preparing Video For Download...