K-Means from Scratch

HardML coding
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]]:

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 для запуска