Python-Clustering-Algorithmen

Ich habe mich nach Clustering-Algorithmen für ein bestimmtes Problem umgesehen. Ich brauche eine Methode, um eine Population von N Partikeln in k Gruppen zu charakterisieren, wobei k nicht unbedingt bekannt ist und außerdem keine a priori Verbindungslängen bekannt sind (ähnlich wie diese)Frage).

Ich habe kmeans ausprobiert, was gut funktioniert, wenn Siekennt Wie viele Cluster möchten Sie. Ich habe versucht, dbscan, die es nur schlecht macht, wenn Siesagen es ist eine charakteristische Längenskala, auf der aufgehört werden soll, nach Clustern zu suchen (oder zu suchen). Das Problem ist, dass ich möglicherweise Tausende dieser Partikelcluster habe und nicht die Zeit aufwenden kann, um den kmeans / dbscan-Algorithmen mitzuteilen, worauf sie abzielen sollen.

Hier ist ein Beispiel dafür, was dbscan findet:

Sie können sehen, dass es hier wirklich zwei getrennte Populationen gibt, obwohl ich den Epsilon-Faktor (den maximalen Abstand zwischen benachbarten Clustern) nicht einstellen kann, um diese beiden Populationen von Partikeln zu sehen.

Gibt es andere Algorithmen, die hier funktionieren würden? Ich suche vorab nach minimalen Informationen - mit anderen Worten, ich möchte, dass der Algorithmus in der Lage ist, "kluge" Entscheidungen darüber zu treffen, was ein separater Cluster sein könnte.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage