Я просматривал scipy и sklearn для алгоритмов кластеризации для конкретной проблемы, которую я имею. Мне нужно каким-то образом характеризовать популяцию N частиц в k группах, где k не обязательно известно, и в дополнение к этому не известны априорные длины связывания (аналогично этому question).
Я пробовал kmeans, который хорошо работает, если вы знаете, сколько кластеров вы хотите. Я пробовал dbscan, который плохо работает, если вы не сообщите характерную шкалу длины, на которой перестать искать (или начинать искать) кластеры. Проблема в том, что у меня есть потенциально тысячи этих кластеров частиц, и я не могу тратить время на то, чтобы рассказать алгоритмы kmeans/dbscan, из чего они должны уйти.
Вот пример того, что dbscan find:
Вы можете видеть, что здесь действительно существуют две отдельные популяции, хотя корректировка эпсилонного фактора (максимальное расстояние между соседними параметрами кластеров), я просто не могу заставить его видеть эти две популяции частиц.
Есть ли какие-нибудь другие алгоритмы, которые будут работать здесь? Я ищу минимальную информацию заранее - другими словами, я бы хотел, чтобы алгоритм мог принимать "умные" решения о том, что может представлять собой отдельный кластер.