Кластеризация очень большого набора данных дискретных выборок

Я пытаюсь сгруппировать (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. Длина моего набора данных исчисляется миллионами.

У меня запущен этап сжатия данных, на котором я:

  1. Сортировать
  2. группа в куски одинакового размера
  3. рассчитать среднее значение на кусок

а затем перейти к использованию списка средних значений в качестве входных данных для кластеризации. Это работает. Однако полученные кластеры демонстрируют зависимость от размера блока, и я обнаружил, что этот выбор трудно защитить.

Я также попытался использовать частоту каждого значения в качестве веса, что, по-видимому, позволяет sklearn.cluster.KMeans. Однако я действительно догадываюсь, для чего используются эти веса.

Благодарность

0 ответов

Другие вопросы по тегам