Menu
CoddyTech

클러스터 프로파일링

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

이 장에서는 클러스터 번호를 사람들이 활용할 수 있는 그룹으로 바꿉니다. 이 장이 끝나면 모든 클러스터에 이름이 붙습니다:

점으로 표시된 놀이공원 방문객 120명. 가로축은 놀이공원에서 보낸 시간, 세로축은 이용한 놀이기구 수이며, 범례에는 세 그룹의 이름이 표시되어 있습니다. 오른쪽 위에는 스릴을 즐기는 사람들, 가운데에는 가족, 왼쪽 아래에는 짧게 방문한 사람들이 있습니다

2라는 숫자만으로는 아무것도 알 수 없습니다. 클러스터 안에 있는 각 특성의 평균인 프로필이 의미를 알려줍니다. 레이블을 열로 추가한 다음 그룹화하세요:

park["cluster"] = km.labels_
print(park.groupby("cluster").mean().round(1))

클러스터당 한 행씩 출력합니다:

         hours  rides   age
cluster
0          6.0    6.2  38.4
1          2.4    3.0  45.8
2          6.8   13.9  20.7

이제 각 행을 단어처럼 읽어 보세요. 클러스터 2는 젊고, 7시간 동안 머물며, 놀이기구를 14번 탑니다. 스릴을 추구하는 방문객들이죠. 클러스터 1은 일찍 떠납니다. 짧게 방문하는 사람들이죠.

challenge icon

챌린지

중급

노래방은 손님에 대해 알고 싶어 합니다. 시작 코드는 손님을 3개의 클러스터로 나눕니다. names에는 한 달 방문 횟수가 가장 적은 클러스터부터 가장 많은 클러스터까지 각 클러스터의 이름이 들어 있습니다.

  1. 레이블을 guests에 cluster 열로 추가하세요.
  2. 클러스터의 평균과 손님 수를 구해 프로파일을 만들고, visits_month를 기준으로 정렬하세요.
  3. 클러스터마다 이름과 평균을 소수점 첫째 자리까지 표시해 한 줄씩 출력하세요.

다른 노래방의 경우:

Once in a while: 30 guests, 1.4 visits a month, 2.5 songs, 3.2 hours
Regulars: 45 guests, 3.0 visits a month, 4.6 songs, 2.0 hours
Superfans: 15 guests, 7.4 visits a month, 9.2 songs, 2.8 hours

직접 해보기

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans

# 노래방 손님 110명: visits a month, 방문당 부른 노래 수, 방문당 머문 시간
guests = pd.read_csv("karaoke.csv")
scaled = StandardScaler().fit_transform(guests)
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(scaled)

# 한 달 방문 횟수가 가장 적은 그룹부터 가장 많은 그룹까지의 이름
names = ["Once in a while", "Regulars", "Superfans"]

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

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

비지도 학습의 모든 레슨

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