← AI 놀이터 홈으로

🎲 k-평균 군집화 (k-means)

정답 라벨 없이 점들의 무리를 스스로 찾아요 — 학생들 키·몸무게만 보고 체육복 사이즈 3종을 정하는 것처럼.

📖 따라하기 가이드 — 1 / 7 단계

Step 1. 비지도학습 첫 만남 — 점에 정답 색이 없다!

지금까지는 점마다 "합격/불합격" 같은 정답 라벨이 있었죠. 이번엔 없어요 — 그래서 점이 전부 회색입니다. 이렇게 정답 없이 데이터 속 무리를 스스로 찾는 걸 비지도학습(unsupervised learning)이라고 해요. 비유하면: 학생들 키·몸무게만 보고 체육복 사이즈를 3종으로 정하는 일이에요. 큰 별(★)은 각 무리의 대표 위치가 될 중심점(centroid) — 아직은 아무렇게나 놓여 있어요. 캔버스를 클릭하면 점을 추가할 수 있어요.

🖱️ 캔버스를 클릭하면 점이 추가돼요. 처음엔 모두 회색 — 정답 라벨이 없으니까요!

📂 데이터 꾸러미:

읽는 법: 가로·세로축은 두 가지 특징(예: 키, 몸무게)이에요. 작은 원이 데이터, 큰 별(★)이 각 군집의 중심점. 할당하면 점이 가까운 별의 색으로 물들고 연한 연결선이 생겨요. 이동하면 별이 자기 무리의 평균 위치로 옮겨가요(화살표가 이동 궤적). 볼 포인트: 별이 무리 한가운데로 점점 끌려가다가 멈추는 순간!

🎛️ 두 박자 알고리즘 체험

📊 지금 상태

반복 횟수
0회
응집도 (inertia)
— (할당 전)
수렴 여부
아직
군집 개수 k
3개

할당↔이동을 반복할수록 응집도가 줄어들다가 중심이 거의 움직이지 않으면 수렴이에요. 시작 위치를 바꾸면 다른 값으로 수렴할 수도 있어요(지역 최솟값).

🧪 이렇게 실험해 보세요

  1. 무리는 3개인데 k=5로 돌리면? — 한 무리가 억지로 쪼개져요
  2. 중심 다시 뽑기를 여러 번 — 수렴한 응집도가 매번 같은가요?
  3. 두 무리 사이 한가운데를 클릭해 점을 두고 자동 실행

🧮 수식과 파이썬

응집도 = Σ ‖xᵢ − c(할당)‖²
각 점에서 자기 중심까지 거리²의 합. 작을수록 뭉침이 좋아요
🐍 파이썬 코드로 보면? (펼치기)
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_)            # 응집도 — 작을수록 잘 뭉침