Реализуйте алгоритм K-Means кластеризации с нуля.
1. Инициализация: первые k точек из входных данных — начальные центроиды
2. Assignment: каждую точку назначь ближайшему центроиду (евклидово расстояние)
3. Update: пересчитай центроиды как среднее точек в кластере
4. Повторяй шаги 2-3 ровно max_iter раз
Верните финальные центроиды (каждая координата округлена до 4 знаков).
def kmeans(points: list[list[float]], k: int, max_iter: int) -> list[list[float]]:
kmeans([[1.0,1.0],[1.5,2.0],[3.0,4.0],[5.0,7.0],[3.5,5.0],[4.5,5.0]], 2, 10)
→ [[1.25, 1.5], [4.0, 5.25]]
- 1 ≤ n ≤ 1000
- 1 ≤ d ≤ 50
- 1 ≤ k ≤ min(n, 20)
- 1 ≤ max_iter ≤ 100
points = [[1,1],[1.5,2],[3,4],[5,7],[3.5,5],[4.5,5]]k = 2max_iter = 10[[1.25,1.5],[4,5.25]]points = [[0,0],[1,0],[10,10],[11,10]]k = 2max_iter = 5[[0.5,0],[10.5,10]]points = [[1],[2],[3]]k = 1max_iter = 1[[2]]