
30번 K-means 는 초기 centroid를 무작위 로 골랐죠. 이게 문제가 됩니다 — 재수 없으면 centroid 두 개가 같은 클러스터에 몰리고, 한 클러스터는 비어버려 최종 해가 나쁘게 수렴.
K-means++ 는 초기 centroid를 서로 멀리 퍼뜨리는 방식으로 개선합니다:
k 개가 될 때까지 2-3 반복.이론적으로 근사 보장 — 순진한 랜덤보다 훨씬 좋음. sklearn.cluster.KMeans 의 기본값도 init='k-means++'.
함수 kmeans_plus_plus_init(X, k, seed) 를 완성하세요.
(k, D) centroid 배열.rng.choice(N, p=prob) 로 확률적 샘플링.X 안의 점이어야 함.| # | 이름 | 검증 |
|---|---|---|
| 1 | shape | (k, D) |
| 2 | 원본 데이터에서 선택 | 각 centroid 가 X 행에 존재 |
| 3 | 시드 재현성 | 같은 seed → 같은 결과 |
| 4 | k 개 고유 centroid | 서로 다른 점들 |
| 5 | 잘 분리된 데이터에서 cluster 별 1개씩 | 3개 블롭 → 각각 다른 블롭에서 선택 |
코드를 작성하고 Run 을 눌러보세요.