정답 라벨 없이 점들의 무리를 스스로 찾아요 — 학생들 키·몸무게만 보고 체육복 사이즈 3종을 정하는 것처럼.
🖱️ 캔버스를 클릭하면 점이 추가돼요. 처음엔 모두 회색 — 정답 라벨이 없으니까요!
읽는 법: 가로·세로축은 두 가지 특징(예: 키, 몸무게)이에요. 작은 원이 데이터, 큰 별(★)이 각 군집의 중심점. 할당하면 점이 가까운 별의 색으로 물들고 연한 연결선이 생겨요. 이동하면 별이 자기 무리의 평균 위치로 옮겨가요(화살표가 이동 궤적). 볼 포인트: 별이 무리 한가운데로 점점 끌려가다가 멈추는 순간!
할당↔이동을 반복할수록 응집도가 줄어들다가 중심이 거의 움직이지 않으면 수렴이에요. 시작 위치를 바꾸면 다른 값으로 수렴할 수도 있어요(지역 최솟값).
import numpy as np
from sklearn.cluster import KMeans
# 학생 45명의 (키, 몸무게) — 정답 라벨은 없어요!
X = np.random.rand(45, 2) * 10
model = KMeans(n_clusters=3, n_init=10) # 군집 3개, 시작 위치 10번 시도
model.fit(X) # 할당↔이동을 수렴할 때까지 반복
print(model.labels_) # 각 점이 속한 군집 번호 (0, 1, 2)
print(model.cluster_centers_) # 최종 중심점 좌표 3개
print(model.inertia_) # 응집도 — 작을수록 잘 뭉침