군집에 이름 붙이기
Coddy Machine Learning 여정의 비지도 학습 섹션에 포함된 레슨. 51개 중 46번째.
클러스터에는 이름이 아니라 숫자가 붙습니다. 이제 레이블을 사용할 수 있습니다. 교차표는 각 클러스터에 어떤 숫자가 포함되었는지 세며, 다음은 3개의 클러스터에 있는 1, 7, 9의 예입니다:
각 클러스터의 이름을 가장 흔한 숫자로 지정하세요. 해당 숫자의 스캔은 올바르게 이름이 지정된 것으로 계산됩니다:
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라는 이름이 붙었습니다.
챌린지
중급10개의 클러스터에 이름을 붙이세요. 시작 코드에는 레이블 없이 학습된 km이 포함되어 있습니다. 이제 y의 숫자를 사용해도 됩니다.
- 클러스터와
y의 교차표를 만들고, 가장 많이 나타나는 숫자를 각 클러스터의 이름으로 지정하세요. - 이름순으로 각 클러스터에서 올바르게 이름이 지정된 스캔 수, 클러스터 크기, 올바르게 이름이 지정된 스캔의 비율을 정수 백분율로 출력하세요.
- 전체에서 올바르게 이름이 지정된 스캔 수와 백분율을 소수점 한 자리까지 출력하세요.
클러스터가 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)
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
비지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러