Кластеризация очень большого набора данных дискретных выборок
Я пытаюсь сгруппировать (AgglomerativeCluster, kMeans) очень большой набор данных следующего типа:
[0, 0, 0, 0, 1, 2, 2, 2, 2, 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5]
То есть выборка целых чисел, которые повторяются несколько раз.
Короче говоря, я хотел бы предварительно обработать образец, преобразовав его в гораздо более короткий список значений:
[(0, 4), (1, 1), (2, 4), (3, 1), (4, 3), (5, 9)],
а затем использовать его как входные данные для кластеризации.
В: Вы знаете, как использовать такой список счетчиков в качестве входных данных для кластеризации?
Моя основная мотивация для этого заключается в том, что либо sklearn.cluster.KMeans, либо sklearn.cluster.AgglomerativeClustering генерирует исключение, когда длина входного массива превышает 50000. Длина моего набора данных исчисляется миллионами.
У меня запущен этап сжатия данных, на котором я:
- Сортировать
- группа в куски одинакового размера
- рассчитать среднее значение на кусок
а затем перейти к использованию списка средних значений в качестве входных данных для кластеризации. Это работает. Однако полученные кластеры демонстрируют зависимость от размера блока, и я обнаружил, что этот выбор трудно защитить.
Я также попытался использовать частоту каждого значения в качестве веса, что, по-видимому, позволяет sklearn.cluster.KMeans. Однако я действительно догадываюсь, для чего используются эти веса.
Благодарность