
v1 K-means 의 문제: 초기화 가 무작위라 local minimum 에 자주 빠짐. 같은 데이터에 seed 만 바꿔도 전혀 다른 클러스터링 — 그리고 운이 나쁘면 두 centroid 가 바로 옆에 배치됨.
K-means++ (Arthur & Vassilvitskii 2007): centroid 를 서로 멀리 흩어지게 확률적으로 선택.
X 에서 균등 무작위.클러스터 품질 스칼라:
K-means 의 목적함수. 같은 에 대해 inertia 가 낮을수록 좋은 클러스터링.
함수 kmeans_pp(X, k, max_iter, seed) 를 완성하세요.
(labels, centroids, inertia) — 이전 반환값 + Python float.rng = np.random.default_rng(seed) 로 전 과정 사용.| # | 이름 | 검증 |
|---|---|---|
| 1 | 반환 3-tuple (labels, centroids, inertia) | |
| 2 | shape: labels (N,), centroids (k, D) | |
| 3 | 떨어진 3-블롭 → 완벽 분리 + inertia 작음 | |
| 4 | K-means++ 가 평균 inertia 가 v1 보다 ≤ | 20 seed 평균 |
| 5 | 시드 재현성 | |
| 6 | labels ∈ [0, k) | |
| 7 | inertia 는 실제 WCSS 와 일치 | 수치적 검증 |
코드를 작성하고 Run 을 눌러보세요.