Мне нужно сгруппировать простой одномерный набор данных в заданное число кластеров. Технически это было бы ближе к сортировке или сортировке данных, поскольку это всего лишь 1D, но мой босс называет его кластеризацией, поэтому я буду придерживаться этого имени. Текущий метод, используемый системой I, является K-средством, но это кажется излишним.
Есть ли лучший способ выполнить эту задачу?
Ответы на некоторые другие сообщения упоминают KDE (оценка плотности ядра), но это метод оценки плотности, как это будет работать?
Я вижу, как KDE возвращает плотность, но как мне сказать, чтобы разделить данные на ящики?
Как мне установить фиксированное количество ячеек, не зависящих от данных (это одно из моих требований)?
В частности, как бы это сделать, используя scikit learn?
Мой входной файл выглядит так:
str ID sls
1 10
2 11
3 9
4 23
5 21
6 11
7 45
8 20
9 11
10 12
Я хочу сгруппировать номер sls в кластеры или контейнеры, чтобы:
Cluster 1: [10 11 9 11 11 12]
Cluster 2: [23 21 20]
Cluster 3: [45]
И мой выходной файл будет выглядеть так:
str ID sls Cluster ID Cluster centroid
1 10 1 10.66
2 11 1 10.66
3 9 1 10.66
4 23 2 21.33
5 21 2 21.33
6 11 1 10.66
7 45 3 45
8 20 2 21.33
9 11 1 10.66
10 12 1 10.66