Как кластеризоваться с помощью K-средних, когда известно количество кластеров и их размеры

Я группирую некоторые данные, используя scikit.

У меня самая простая задача: я знаю количество кластеров. И я знаю размер каждого кластера. Можно ли указать эту информацию и передать ее функции К-средних?


person soshial    schedule 30.05.2014    source источник
comment
Не могли бы вы прокомментировать, откуда эта проблема?   -  person eickenberg    schedule 30.05.2014


Ответы (3)


Это больше не будет k-means.

K-means - это минимизация дисперсии, и кажется, что ваша цель - создать разделы предопределенного размера, а не минимальной дисперсии.

Однако вот учебник, в котором показано, как изменить k-средние для создавать кластеры одинакового размера. Вы можете легко расширить это, чтобы создавать кластеры желаемого размера вместо среднего размера. Модифицировать k-средние таким образом довольно легко. Но результаты будут еще более бессмысленными, чем результаты k-средних для большинства наборов данных. K-средние часто так же хороши, как случайные выпуклые разбиения.

person Has QUIT--Anony-Mousse    schedule 30.05.2014
comment
К-средние часто так же хороши, как случайные выпуклые разбиения. довольно самоуверенно :) - person eickenberg; 31.05.2014

Нет. Для этого вам нужен какой-то тип алгоритма кластеризации с ограничениями, и ни один из них не реализован в scikit-learn. (Это не «самая простая возможная задача», я бы даже не знал о принципиальном алгоритме, который это делает, кроме некоторого эвристического перемещения образцов из одного кластера в другой.)

person Fred Foo    schedule 30.05.2014

Я могу думать только об алгоритме грубой силы. Если кластеры хорошо разделены, вы можете попробовать запустить кластеризацию несколько раз с разными случайными инициализациями, предоставляя в качестве входных данных только количество кластеров. После каждой итерации подсчитывайте размер каждого кластера, сортируйте его и сравнивайте с отсортированным списком известных размеров кластеров. Если они не совпадают, промойте и повторите.

person Dennis Sakva    schedule 30.05.2014