Python KMeans кластеризация слов - PullRequest
9 голосов
/ 17 марта 2010

Мне интересно выполнить кластеризацию kmeans в списке слов с мерой расстояния Левешштейна.

1) Я знаю, что существует множество фреймворков, включая scipy и orange, которые имеют реализацию kmeans. Однако все они требуют какой-то вектор в качестве данных, которые мне не подходят.

2) Мне нужна хорошая реализация кластеризации. Я посмотрел на Python-кластеризацию и понял, что он не а) возвращает сумму всех расстояний до каждого центроида и б) у него нет какого-либо итерационного предела или ограничения, которое обеспечивает качество кластеризации. Python-кластеризация и алгоритм кластеризации на daniweb действительно не работают для меня.

Может кто-нибудь найти мне хорошую библиотеку? Google не был моим другом

Ответы [ 4 ]

1 голос
/ 17 марта 2010

Да, я думаю, что нет хорошей реализации того, что мне нужно.

У меня есть некоторые безумные требования, такие как дистанционное кэширование и т. Д.

Так что я думаю, что просто напишу свою собственную библиотеку и скоро выпустлю ее как GPLv3.

0 голосов
/ 07 сентября 2018

А как насчет этого очень хорошего ответа на CrossValidated?

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

Преимущество Affinity Propagation заключается в том, что он автоматически выбирает количество кластеров, которое можно настроить (иметь больше или меньше кластеров), изменив предпочтение (которое по умолчанию является медианой всех парных расстояний, но вы можете выбрать другое). процентили).

Если вам нужно указать точное количество кластеров, кроме настройки распространения по методам проб и ошибок, вы можете найти реализацию k-medoids (очевидно, что в sklearn его реализации нет, но люди просили об этом здесь и здесь ). K-medoids не строит центроиды, поэтому ему не нужно понятие векторного пространства. Таким образом, реализация может принять в качестве входных данных предварительно вычисленную матрицу расстояний (однако я не проверил ссылки, которые я даю).

0 голосов
/ 09 января 2012

Может быть, посмотрите на Weka . Это библиотека Java с некоторыми неконтролируемыми реализациями обучения и хорошими инструментами визуализации. Прошло много времени с тех пор, как я его использовал, не уверен, что он хорош для реальной производственной среды, но, безусловно, хорошая отправная точка.

0 голосов
/ 17 марта 2010

Не совсем ответ на ваш конкретный вопрос, но я рекомендую взглянуть на "Программирование Коллективного разума" . В конце каждой главы, например, кластеризация, он описывает все лучшее чтение по теме.

...