Algoritmos de clustering do Python
Eu tenho procurado por scipy e sklearn para algoritmos de cluster para um problema particular que tenho. Eu preciso de alguma maneira de caracterizar uma população de N partículas em grupos k, onde k não é necessariamente conhecido, e além disso, não são conhecidos comprimentos de ligação a priori (similar a estequestão).
Eu tentei kmeans, o que funciona bem se vocêconhecer quantos clusters você deseja. Eu tentei dbscan, que faz mal a menos que vocêcontar é uma escala de comprimento característica na qual parar de procurar (ou começar a procurar) por clusters. O problema é que eu tenho potencialmente milhares desses aglomerados de partículas, e não posso gastar o tempo para dizer aos algoritmos de kmeans / dbscan do que eles devem se dedicar.
Aqui está um exemplo do que o dbscan encontra:
Você pode ver que realmente existem duas populações separadas aqui, embora ajustando o fator epsilon (a distância máxima entre o parâmetro de clusters vizinhos), eu simplesmente não consigo ver essas duas populações de partículas.
Existe algum outro algoritmo que funcione aqui? Estou procurando informações iniciais mínimas - em outras palavras, gostaria que o algoritmo fosse capaz de tomar decisões "inteligentes" sobre o que poderia constituir um cluster separado.