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.
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ế.
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 đề.
- 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.
- 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.
- 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. - 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 Cvà biểu đồ của cửa hàng đó:
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
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
1Tìm các nhóm
Học không cần nhãnĐo độ tương đồngTự thực hiện K-MeansK-Means trong scikit-learnÔn tập: thành viên phòng gym7PCA trong thực tế
Quan sát 64 chiềuCác thành phần như mẫu hìnhNén và dựng lạiPCA trước khi xây dựng mô hìnhÔn tập: máy quét khuôn mặt10Dự án: Khám phá chữ số
Quan sát các chữ sốThu gọn bằng PCAPhân cụm chữ sốĐặt tên cho các cụmTìm những chữ số khác biệt2Chọn k
Quán tínhPhương pháp khuỷu tayĐiểm số SilhouetteChuẩn hóa thang đo trước khi phân cụmÔn tập: Các vùng giao hàngTự luyện tập: Trình biên dịch Python online