Реализуйте алгоритм k-medoids, предоставляя расстояния между объектами данных и medoids

Я пытался реализовать k-medoids в C ++.
До сих пор я придумал реализацию k-medoids, указав количество кластеров (или количество семян), как описано на странице k-medoids в Википедии.

Теперь я пытаюсь реализовать это, указав расстояния, а не количество кластеров.

Позвольте мне нарисовать картину. Два круга представляют кластер, а точки — объекты данных. С1 и С2 — семена (медоиды).

Например, если вы указываете «8 миль», каждая зеленая линия на рисунке выше должна быть равна или меньше 8 миль. Я потратил много времени на поиск способов реализации k-medoids, указав количество семян, но не расстояния.

Буду признателен, если вы дадите какой-нибудь совет.
(Я сказал, что использую c ++, но сам язык программирования не имеет значения, так как меня интересует только алгоритм.)

0

Решение

Если вы ограничиваете максимальное расстояние, вы делаете иерархическая кластеризация (точнее, один разрез дерева кластеров), а не k-medoids.

Обычно это делается с помощью матрицы расстояний.

1

Другие решения


По вопросам рекламы [email protected]