쇼핑 구간
Coddy Machine Learning 여정의 비지도 학습 섹션에 포함된 레슨. 51개 중 48번째.
온라인 식물 판매점은 1년에 주문한 횟수, 장바구니 크기, 세일 상품 구매 비율, 마지막 주문 후 경과 일수로만 240명의 고객을 파악합니다.
아무도 그들에게 라벨을 붙이지 않았습니다. 소유자는 쉬운 말로 설명할 수 있는 몇 개의 세그먼트와 이탈한 고객을 되찾기 위한 이메일을 원합니다.
두 방법이 k에 대해 일치하도록 하세요. ward 트리가 k를 제안하고, 실루엣이 이웃과 비교해 확인합니다. 그런 다음 모든 세그먼트를 실제 단위로 읽으세요.
챌린지
어려움프로그램은 트리를 어디에서 자를지 읽어 오고, 시작 코드는 제목이 있는 차트를 설정합니다.
- 특성의 스케일을 조정하고 해당 지점에서 ward 트리를 자릅니다. 생성된 세그먼트 수를 출력합니다.
- 해당 k와 양옆의 각 k에 대해 k-means 실루엣 점수(소수점 3자리)를 출력한 다음, 가장 좋은 k를 출력합니다.
- 그 값으로 다시 적합해
plants["segment"]에 저장합니다. 가장 큰 세그먼트부터 나열하고 각 세그먼트에 문자를 붙여 실제 단위의 평균을 출력한 다음, 가장 오래전에 마지막 주문이 있었던 세그먼트를 출력합니다. - 각 세그먼트를 해당 문자로 표시해 산점도로 그립니다. 범례를 표시하고 차트를 보여 줍니다.
다른 매장의 경우 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그리고 그 차트:
그러면 Coddy가 여러분의 결과를 설명합니다.
직접 해보기
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
# 식물 가게 고객 한 명당 한 행
plants = pd.read_csv("plants.csv")
features = ["orders_per_year", "avg_basket_eur", "sale_share_pct", "days_since_order"]
# 덴드로그램에서 읽은, 가게 주인이 트리를 자르는 높이 (세그먼트 3개 이상)
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)")
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
비지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러