Вы задаете неправильный вопрос.
Вместо того, чтобы спрашивать «какой алгоритм», вы должны спрашивать «что такое значимая категория / кластер в вашем приложении».
Я не удивлен, что вышеприведенные алгоритмы не сработали - они рассчитаны на очень разные варианты использования. k-means не работает с произвольными другими расстояниями. Не используйте это с расстоянием Хэмминга. Есть причина, по которой он называется k- means , его имеет смысл использовать только тогда, когда среднее арифметическое имеет смысл (чего нельзя сказать о двоичных данных).
Вы можете вместо этого попробовать k-режимы, IIRC - это вариант, который на самом деле предназначен для использования с категориальными данными, а двоичные данные несколько категоричны (но разреженность может вас убить).
Но прежде всего, вы удалили дубликаты, чтобы упростить ваши данные, и удалили, например, уникальные / пустые столбцы?
Возможно, APRIORI или подобные подходы также более значимы для вашей проблемы.
В любом случае, сначала выясните, что вам нужно, а затем, какой алгоритм может решить эту проблему. Работайте на основе данных , а не пробуя случайные алгоритмы.