Menu
CoddyTech

Các phân khúc mua sắm

Thuộc phần Học không giám sát trong hành trình Machine Learning của Coddy. Bài học 48 trên 51.

Một cửa hàng cây cảnh trực tuyến chỉ biết 240 khách hàng của mình qua hành vi của họ: số đơn hàng mỗi năm, quy mô giỏ hàng, tỷ lệ mua hàng giảm giá và số ngày kể từ đơn hàng gần nhất.

240 khách hàng của cửa hàng cây cảnh được thể hiện bằng các chấm màu xám, số đơn hàng mỗi năm trên trục ngang và giá trị giỏ hàng trung bình tính bằng euro trên trục dọc, không có nhãn: một dải điểm dày ở mức giá trị giỏ hàng thấp và một nhóm nhỏ chi tiêu nhiều gần góc trên bên trái

Chưa ai đặt nhãn cho chúng. Chủ cửa hàng muốn có vài phân khúc để mô tả bằng những từ ngữ đơn giản, cùng một email kéo khách quay lại cho nhóm đã rời đi.

Hãy để hai phương thức thống nhất về k: cây phân vùng gợi ý giá trị này, còn hình dáng kiểm tra nó với các vùng lân cận. Sau đó, đọc mọi đoạn theo đơn vị thực tế.

challenge icon

Thử thách

Khó

Chương trình đọc vị trí cắt cây; phần code khởi tạo biểu đồ có tiêu đề.

  1. Chuẩn hóa các đặc trưng rồi cắt cây phân cấp ward tại đó. In ra số phân đoạn tạo được.
  2. In điểm silhouette của k-means (3 chữ số thập phân) cho k đó và từng giá trị liền kề, sau đó in k tốt nhất.
  3. Huấn luyện lại với k đó và lưu vào plants["segment"]. Xếp theo thứ tự lớn nhất trước, gán chữ cái cho mỗi phân đoạn và in các giá trị trung bình theo đơn vị thực tế, sau đó in phân đoạn có lần đặt hàng gần nhất cách đây lâu nhất.
  4. Vẽ biểu đồ phân tán cho từng phân đoạn, gắn nhãn bằng chữ cái tương ứng; thêm chú giải rồi hiển thị biểu đồ.

Với một cửa hàng khác, cắt ở mức 8:

Tree cut at 8.0: 3 segments
Silhouette at k = 2: 0.573
Silhouette at k = 3: 0.675
Silhouette at k = 4: 0.630
Best k: 3
A (70): 8.6 orders a year, 29 EUR baskets, 15% on sale, last order 23 days ago
B (50): 3.1 orders a year, 22 EUR baskets, 60% on sale, last order 53 days ago
C (30): 1.8 orders a year, 89 EUR baskets, 10% on sale, last order 148 days ago
Win-back email: segment C

và biểu đồ của cửa hàng đó:

Các phân đoạn của một cửa hàng khác, có tiêu đề Plant Shop Segments: A, 70 khách hàng với 5 đến 14 đơn hàng mỗi năm; B, 50 khách hàng với ít đơn hàng và giỏ hàng nhỏ; C, 30 khách hàng với ít đơn hàng và giỏ hàng lớn ở gần phía trên, cùng chú giải

Sau đó, Coddy sẽ mô tả kết quả của bạn.

Tự làm thử

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
from scipy.cluster.hierarchy import linkage, fcluster

# Mỗi khách hàng của cửa hàng cây cảnh có một hàng
plants = pd.read_csv("plants.csv")
features = ["orders_per_year", "avg_basket_eur", "sale_share_pct", "days_since_order"]

# Độ cao mà chủ cửa hàng chọn để cắt cây phân cấp, đọc từ biểu đồ cây (3 phân khúc trở lên)
cut = float(input())

fig, ax = plt.subplots()
ax.set_title("Plant Shop Segments")
ax.set_xlabel("Orders per year")
ax.set_ylabel("Average basket (EUR)")

# Viết code của bạn bên dưới
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Học không giám sát

Tự luyện tập: Trình biên dịch Python online