K-Means from Scratch

HardAlgo
15:00
Лучше работает на десктопе
DSK-MeansClusteringNumPy

Реализуйте алгоритм 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]]

Constraints

- 1 ≤ n ≤ 1000
- 1 ≤ d ≤ 50
- 1 ≤ k ≤ min(n, 20)
- 1 ≤ max_iter ≤ 100

Примеры

Пример 1

Вход:
points = [[1,1],[1.5,2],[3,4],[5,7],[3.5,5],[4.5,5]]
k = 2
max_iter = 10
Выход:[[1.25,1.5],[4,5.25]]

Пример 2

Вход:
points = [[0,0],[1,0],[10,10],[11,10]]
k = 2
max_iter = 5
Выход:[[0.5,0],[10.5,10]]

Пример 3

Вход:
points = [[1],[2],[3]]
k = 1
max_iter = 1
Выход:[[2]]
Консоль
Нажмите Run или Ctrl+Enter для запуска