Algoritmos de agrupación de Python

He estado buscando alrededor de los algoritmos de agrupación para un problema particular que tengo. Necesito alguna forma de caracterizar una población de N partículas en k grupos, donde k no se conoce necesariamente, y además de esto, no se conocen longitudes de enlace a priori (similar a estopregunta).

He intentado kmeans, que funciona bien sisaber cuantos clusters quieres He intentado dbscan, que funciona mal a menos que ustedcontar es una escala de longitud característica en la cual dejar de buscar (o comenzar a buscar) los grupos. El problema es que potencialmente tengo miles de estos grupos de partículas, y no puedo pasar el tiempo para decirles a los algoritmos kmeans / dbscan de qué deberían funcionar.

Aquí hay un ejemplo de lo que dbscan encuentra:

Puedes ver que realmente hay dos poblaciones separadas aquí, aunque al ajustar el factor épsilon (el parámetro de la distancia máxima entre agrupaciones vecinas), simplemente no puedo ver esas dos poblaciones de partículas.

¿Hay algún otro algoritmo que funcione aquí? Estoy buscando información mínima por adelantado; en otras palabras, me gustaría que el algoritmo pudiera tomar decisiones "inteligentes" sobre lo que podría constituir un grupo separado.

Respuestas a la pregunta(4)

Su respuesta a la pregunta