Znalazłem tej implementacji Pythona w Breaks Jenks Natural algorytmu i mogłem zrobić to uruchomić na moim Windows 7 maszynie. Jest dość szybki i wykrywa przerwy w krótkim czasie, biorąc pod uwagę rozmiar moich geodanych. Przed użyciem tego algorytmu grupowania dla moich danych korzystałem sklearn.clustering.KMeans
(tutaj) z algorytmu. Problemem z KMeans było znalezienie optymalnego parametru wartości K, ale „rozwiązałem” to uruchomienie algorytmu dla różnych wartości K i użycie sklearn.metrics.silhouette_score
(tutaj) do znalezienia najlepszego K.
Moje pytanie brzmi: jeśli powiem algorytmowi Natural Breaks, aby znalazł 5 klas (to byłby K), jak mogę się upewnić, że jest to liczba klas, które najlepiej pasują do moich danych? Jak potwierdzić, że wybieram najlepszą liczbę przerw?
Dzięki!
źródło
Odpowiedzi:
Jenks Natural Breaks działa poprzez optymalizację dobroci wariancji dopasowania, wartość od 0 do 1, gdzie 0 = brak dopasowania i 1 = idealne dopasowanie. Kluczem do wyboru liczby klas jest znalezienie równowagi między wykrywaniem różnic a nadmiernym przetwarzaniem danych. Aby określić optymalną liczbę klas, sugeruję użycie pożądanej wartości progowej GVF i użycie liczby klas, które spełniają tę wartość w pierwszej kolejności.
Poniżej znajduje się funkcja do obliczania dobroci dopasowania wariancji, biorąc pod uwagę tablicę wartości do sklasyfikowania i liczbę wybranych klas:
Na przykład, rozważ, że zdecydujesz, że GVF powinien wynosić co najmniej 0,8, wtedy możesz zwiększać liczbę klas, aż GVF będzie spełniony:
źródło