W danych jednowymiarowych nie używaj analizy skupień.
Analiza skupień jest zwykle techniką wielowymiarową. Albo pozwólcie, że lepiej to odwrócę: w przypadku danych jednowymiarowych - które są całkowicie uporządkowane - istnieją znacznie lepsze techniki. Używanie k-średnich i podobnych technik jest tutaj całkowitym marnotrawstwem, chyba że włożycie wystarczająco dużo wysiłku, aby faktycznie zoptymalizować je dla przypadku 1-d.
Podam przykład: dla k-oznacza często używa się k losowych obiektów jako początkowych nasion. W przypadku danych jednowymiarowych dość łatwo jest to zrobić lepiej, stosując odpowiednie kwantyle (1 / 2k, 3 / 2k, 5 / 2k itp.), Po jednokrotnym posortowaniu danych , a następnie optymalizacji od tego punktu początkowego. Jednak danych 2D nie można całkowicie posortować. A w siatce prawdopodobnie będą puste komórki.
Nie nazwałbym tego też klastrami. Nazwałbym to interwałem . To, co naprawdę chcesz zrobić, to zoptymalizować granice interwałów. Jeśli użyjesz k-średnich, przetestuje dla każdego obiektu, czy powinien zostać przeniesiony do innego klastra. To nie ma sensu w 1D: należy sprawdzać tylko obiekty na granicy przedziałów. To oczywiście jest znacznie szybsze, ponieważ jest tam tylko ~ 2k obiektów. Jeśli nie wolą już innych interwałów, więcej centralnych obiektów też nie będzie.
Możesz przyjrzeć się takim technikom, jak na przykład optymalizacja Jenks Natural Breaks .
Możesz też dokonać oszacowania gęstości jądra i poszukać lokalnych minimów gęstości do podziału. Zaletą jest to, że nie musisz w tym celu określać k!
PS skorzystaj z funkcji wyszukiwania. Oto kilka pytań dotyczących klastra danych 1-d, które przegapiłeś: