Menu
CoddyTech

군집에 이름 붙이기

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

클러스터에는 이름이 아니라 숫자가 붙습니다. 이제 레이블을 사용할 수 있습니다. 교차표는 각 클러스터에 어떤 숫자가 포함되었는지 세며, 다음은 3개의 클러스터에 있는 1, 7, 9의 예입니다:

클러스터가 세로로, 숫자 1, 7, 9가 가로로 표시된 3×3 개수 표. 각 행에서 가장 큰 개수가 상자로 표시되어 있습니다. 클러스터 0에는 9가 166개, 클러스터 1에는 7이 176개, 클러스터 2에는 1이 154개 있습니다

각 클러스터의 이름을 가장 흔한 숫자로 지정하세요. 해당 숫자의 스캔은 올바르게 이름이 지정된 것으로 계산됩니다:

ct = pd.crosstab(km.labels_, y)
names = ct.idxmax(axis=1)      # 각 행에서 값이 가장 큰 열
right = ct.max(axis=1).sum()
print(names.tolist(), right)

이것은 [9, 7, 1] 496을 출력합니다. 541개의 스캔 중 496개는 레이블 하나 없이 찾은 그룹별로 right라는 이름이 붙었습니다.

challenge icon

챌린지

중급

10개의 클러스터에 이름을 붙이세요. 시작 코드에는 레이블 없이 학습된 km이 포함되어 있습니다. 이제 y의 숫자를 사용해도 됩니다.

  1. 클러스터와 y의 교차표를 만들고, 가장 많이 나타나는 숫자를 각 클러스터의 이름으로 지정하세요.
  2. 이름순으로 각 클러스터에서 올바르게 이름이 지정된 스캔 수, 클러스터 크기, 올바르게 이름이 지정된 스캔의 비율을 정수 백분율로 출력하세요.
  3. 전체에서 올바르게 이름이 지정된 스캔 수와 백분율을 소수점 한 자리까지 출력하세요.

클러스터가 5개인 경우:

Cluster named 0: 175 of 177 scans (99%)
Cluster named 2: 160 of 367 scans (44%)
Cluster named 3: 168 of 531 scans (32%)
Cluster named 6: 179 of 359 scans (50%)
Cluster named 7: 176 of 363 scans (48%)
Named right without labels: 858 of 1797 scans (47.7%)

어떤 클러스터의 성능이 가장 낮으며, 그 안에는 무엇이 숨어 있나요?

직접 해보기

import pandas as pd
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans

# Look at the Digits에서: 64픽셀 스캔 이미지 1,797개, 잉크 값은 0에서 16까지
digits = load_digits()
X = digits.data
y = digits.target

# Shrink with PCA에서: 스캔 이미지당 13개의 숫자로 분산의 80%를 설명
pca = PCA(n_components=0.8)
X_small = pca.fit_transform(X)

# Cluster the Digits에서: 레이블 없이 찾아낸 10개의 클러스터
km = KMeans(n_clusters=10, n_init=10, random_state=0).fit(X_small)

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

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

비지도 학습의 모든 레슨

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