Menu
CoddyTech

고객 세그먼트

Coddy Machine Learning 여정의 비지도 학습 섹션에 포함된 레슨. 51개 중 39번째.

이 장에서는 군집을 활용해 분위기에 따라 분류된 재생 목록을 만들어 봅니다:

점으로 표시된 80곡, 가로축은 긍정성, 세로축은 에너지이며, k-means가 찾아 이름 붙인 네 그룹: 왼쪽 위는 긴장, 오른쪽 위는 행복, 왼쪽 아래는 슬픔, 오른쪽 아래는 차분함

먼저, 세그먼트: 사람들이 행동을 취할 수 있는 군집입니다. 한 호스텔은 두 가지 특징을 척도화하고 고객을 군집으로 나누었습니다:

호스텔 투숙객 150명, 가로축은 숙박당 숙박 일수, 세로축은 사전 예약 일수이며 세 가지 세그먼트로 나뉨: 몇 달 전에 예약한 수학여행객, 짧게 묵는 주말 여행객, 늦게 예약하고 오래 묵는 배낭여행객

실제 단위는 세그먼트가 어떤 특성을 갖는지 나타냅니다. 표준화된 중심점은 세그먼트를 구분하는 요소, 즉 평균 고객과 비교한 각 특성의 표준편차 단위 값을 보여 줍니다.

X = StandardScaler().fit_transform(guests[["nights", "days_ahead"]])
km = KMeans(n_clusters=3, n_init=10, random_state=0).fit(X)
print(km.cluster_centers_.round(1))

다음과 같이 출력됩니다:

[[ 1.3 -0.7]
 [-0.7 -0.7]
 [-0.7  1.4]]

각 행에서 0으로부터 가장 멀리 떨어진 숫자가 해당 세그먼트를 나타냅니다. 0번 행은 표준편차보다 1.3 더 길게 머뭅니다: 배낭여행객. 2번 행은 표준편차보다 1.4 더 일찍 예약합니다: 수학여행.

challenge icon

챌린지

중급

극장은 회원 166명의 정보를 알고 싶어 합니다. 프로그램은 age,ticket_price와 같이 세그먼트를 나눌 특성을 읽습니다.

  1. 해당 열을 스케일링하고, 시작 코드의 헬퍼를 사용해 best_k(X)개의 세그먼트로 군집화한 다음, 그 개수를 출력합니다.
  2. 가장 큰 세그먼트부터 각 세그먼트의 크기와 이름을 출력합니다. 이름은 중심값이 0에서 가장 멀리 떨어진 특성, high 또는 low, 그리고 그 거리입니다.

다른 극장과 age,shows_per_year의 경우:

4 segments
57 members: high shows_per_year (1.2 std from average)
52 members: low shows_per_year (1.0 std from average)
40 members: low age (1.4 std from average)
32 members: high age (1.5 std from average)

직접 해보기

import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

# 극장 회원 한 명당 한 행
members = pd.read_csv("theatre.csv")
# age,ticket_price 등 세분화에 사용할 특성
features = input().split(",")


# Silhouette Scores를 기준으로 X에 대해 2부터 6까지의 k 중 실루엣 점수가 가장 높은 값
def best_k(X):
    best, best_score = 2, -1
    for k in range(2, 7):
        labels = KMeans(n_clusters=k, n_init=10, random_state=0).fit_predict(X)
        score = silhouette_score(X, labels)
        if score > best_score:
            best, best_score = k, score
    return best


# 아래에 코드를 작성하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

비지도 학습의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러