Код Middle Кластеризация и снижение размерности обновлено

k-means на списках

Условие

Напишите kmeans(points, centers, iters): алгоритм Ллойда с заданными начальными центрами. На каждой итерации назначьте каждую точку ближайшему центру (при равенстве расстояний центру с меньшим индексом) и пересчитайте центры как средние; пустой кластер сохраняет старый центр. Остановитесь после iters итераций или раньше, если назначения не изменились. Верните [centers, labels], координаты центров округлите до 4 знаков.

Примеры

kmeans([[1], [2], [3], [10], [11]], [[2], [9]], 10) // [[[2], [10.5]], [0, 0, 0, 1, 1]]
kmeans([[0, 0], [0, 1], [5, 5], [5, 6]], [[0, 0], [1, 1]], 10) // [[[0, 0.5], [5, 5.5]], [0, 0, 1, 1]]
kmeans([[1], [2], [3]], [[2], [100]], 5) // [[[2], [100]], [0, 0, 0]]

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме