Траектория tr
представлена как {x1,y1,x2,y2,....x13,y13}
. Форма данных выглядит как 13609440 x 26
.
Ниже приведен демонстрационный график всех пар x, y (с удалением всех отсутствующих значений) до того, как я преобразовал пары x, y (с отсутствующими значениями) в линейные сегменты из 13 точек данных. Это было только для того, чтобы понять, как выглядят данные.
Цель состоит в том, чтобы кластеризовать эти сегменты линий вместо точек данных индивидуально и получить кластер центры или любая результирующая матрица, которая в основном представляет собой кластеры.
Сказав это, проблема, с которой я сталкиваюсь, заключается в том, как кластеризовать и разместить весь набор данных. У меня есть 400 Гб оперативной памяти. Число кластеров, в которых я надеюсь кластеризовать данные, равно 1000
. MiniBatch K-средства от sklearn поддерживает partial_fit
и с помощью которого я смог уместить весь набор данных в пакетном режиме. Тем не менее, Kmeans принимает сферические формы кластеров, что здесь явно не так. Меня заинтересовала модель гауссовой смеси от sklearn , она подходит для кластеров с различными формами и ориентациями. Однако я мог уместить только 30% данных, учитывая количество кластеров и объем памяти. Как GMM, не поддерживает part_fit
Я также изучил Spectral clustering from Dask
, который работает параллельно. И проблема, с которой я столкнулся, заключалась в измерении / форме выходных данных матрицы cluster_centers.
Спектральная кластеризация включает три основных этапа: 1) она создает матрицу сродства, 2) разлагает ее, используя собственные значения и собственные векторы, и 3) выполняет Kmeans поверх нее, чтобы получить метки кластера. Однако меня интересуют не метки кластера, а только представления кластера, которые в данном случае являются центрами кластера. Вот фрагмент:
spc= SpectralClustering(n_clusters=1000, persist_embedding=True, n_components=10000).fit(X)
spc.assign_labels_.cluster_centers_.shape
> (1000,1000)
Это выводит матрицу формы (1000, 1000), потому что матрица сродства имеет форму n_samples x n_components
, где n_samples - количество выборок, а n_components обрабатываются как количество функций в базовом алгоритме Kmeans.
Обычно Kmeans выводит cluster_centers формы 1000x26
26, представляющей собой число объектов, так как сегменты входных линий имеют форму 13M x 26
.
Надеюсь, я предоставил достаточно информации для Вы, чтобы помочь мне. Я ищу любые предложения относительно того, как я могу кластеризовать этот набор данных и получить представления кластера в форме центров кластера или чего-либо еще. Я буду использовать эти кластерные представления для дальнейшей задачи.