Как можно использовать оценку плотности ядра в качестве одномерного метода кластеризации в обучении scikit?
Мне нужно сгруппировать простой одномерный набор данных в заданное количество кластеров. Технически это было бы ближе к разбивке или сортировке данных, поскольку это всего лишь 1D, но мой начальник называет это кластеризацией, поэтому я буду придерживаться этого имени. Текущий метод, используемый системой, на которой я работаю, - это K-means, но это кажется излишним.
Есть ли лучший способ выполнить эту задачу?
В ответах на некоторые другие посты упоминается KDE (оценка плотности ядра), но как это работает, как оценивать плотность?
Я вижу, как KDE возвращает плотность, но как мне сказать, чтобы она разбивала данные на корзины?
Как у меня есть фиксированное количество бинов, не зависящих от данных (это одно из моих требований)?
Точнее, как можно было бы научиться этому с помощью Scikit?
Мой входной файл выглядит так:
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