Algorytmy klastrowania Pythona

Rozglądam się po scispy i sklearn dla algorytmów klastrowania dla konkretnego problemu, który mam. Potrzebuję jakiegoś sposobu scharakteryzowania populacji N cząstek w k grupach, gdzie k niekoniecznie jest znane, a poza tym nie są znane żadne a priori długości łączenia (podobne do tegopytanie).

Próbowałem kmeans, który działa dobrze, jeśli tywiedzieć ile chcesz klastrów. Wypróbowałem dbscan, który działa źle, chyba że typowiedzieć to charakterystyczna skala długości, na której przestaniesz szukać (lub zaczniesz szukać) klastrów. Problem polega na tym, że mam potencjalnie tysiące tych klastrów cząstek i nie mogę poświęcić czasu na przekazanie algorytmom kmeans / dbscan tego, z czego powinny się rozłączyć.

Oto przykład znalezienia dbscan:

Widać, że naprawdę istnieją tutaj dwie oddzielne populacje, chociaż dostosowując współczynnik epsilon (maksymalna odległość między parametrem sąsiednich klastrów), po prostu nie mogę go zobaczyć, aby zobaczyć te dwie populacje cząstek.

Czy są jakieś inne algorytmy, które mogłyby tu działać? Szukam minimalnych informacji z góry - innymi słowy, chciałbym, aby algorytm mógł podejmować „inteligentne” decyzje dotyczące tego, co może stanowić oddzielny klaster.

questionAnswers(4)

yourAnswerToTheQuestion