Кластеризация на основе матрицы расстояний - программирование
Подтвердить что ты не робот

Кластеризация на основе матрицы расстояний

Моя цель - кластерные слова, основанные на том, насколько они похожи на корпус текстовых документов. Я вычислил Jaccard сходство между каждой парой слов. Другими словами, у меня есть редкая матрица расстояний, доступная со мной. Может ли кто-нибудь указать мне какой-либо алгоритм кластеризации (и, возможно, его библиотеку на Python), который принимает матрицу расстояний в качестве входных данных? Я также заранее не знаю количество кластеров. Я хочу только сгруппировать эти слова и получить, какие слова сгруппированы вместе.

4b9b3361

Ответ 1

Вы можете использовать большинство алгоритмов в scikit-learn с предварительно вычисленной матрицей расстояний. К сожалению, вам нужно количество кластеров для многих алгоритмов. DBSCAN - это единственный, который не нуждается в количестве кластеров, а также использует произвольные матрицы расстояний. Вы также можете попробовать MeanShift, но это будет интерпретировать расстояния как координаты - которые также могут работать.

Существует также распространение сродства, но я не очень хорошо это видел. Если вам нужно много кластеров, это может быть полезно.

раскрытие: я разработчик ядра scikit-learn.

Ответ 2

Скопированный пакет кластеризации может быть полезен (scipy.cluster). В scipy.cluster.hierarchy существуют иерархические функции кластеризации. Обратите внимание, однако, что для них требуется конденсированная матрица как входная (верхняя треугольная матрица расстояния). Надеемся, страницы документации помогут вам.

Ответ 3

Рекомендую взглянуть на агломерационную кластеризацию.