Klastrowanie tablicy liczb 1D [duplikat]

Możliwy duplikat:
Klaster danych jednowymiarowych optymalnie?

Powiedzmy, że mam taką tablicę:

[1,1,2,3,10,11,13,67,71]

Czy istnieje wygodny sposób na podzielenie tablicy na coś takiego?

[[1,1,2,3],[10,11,13],[67,71]]

Przejrzałem podobne pytania, ale większość ludzi zasugerowała używanie k-means do grupowania punktów, takich jak scipy , co jest dość mylące w użyciu dla początkujących jak ja. Również myślę, że k-oznacza jest bardziej odpowiedni dla dwóch albo bardziej wymiarowe klastry, prawda? Czy są jakieś sposoby na podzielenie tablicy n liczb na wiele partycji/grupowanie w zależności od liczb?

Niektórzy sugerują również sztywne partycjonowanie zakresu, ale nie zawsze renderuje ono wyniki jako oczekiwane

Author: Community, 2012-07-17

2 answers

Nie używaj wielowymiarowych algorytmów klastrowania dla jednowymiarowego problemu. Pojedynczy wymiar jest o wiele bardziej wyjątkowy niż naiwnie myślisz, ponieważ w rzeczywistości możesz sortować to, co sprawia, że rzeczy są o wiele łatwiejsze.

W rzeczywistości zwykle nie nazywa się to nawet klastrem, ale np. segmentacją lub optymalizacją naturalnych przerw.

Warto przyjrzeć się Jenks Natural Breaks Optimization i podobnym metodom statystycznym. Gęstość Jądra Szacowanie jest również dobrą metodą do patrzenia, z silnym tłem statystycznym. Lokalne minima gęstości są dobrymi miejscami do dzielenia danych na klastry, z powodów statystycznych, aby to zrobić. KDE jest chyba najbardziej dźwiękową metodą grupowania danych 1-wymiarowych.

Z KDE, znowu staje się oczywiste, że dane 1-wymiarowe są o wiele lepiej zachowywane. W 1D masz lokalne minima, ale w 2D możesz mieć punkty siodła i takie" być może " punkty podziału. Zobacz też Ilustracja w Wikipedii punktu siodła , jako że taki punkt może, ale nie musi być odpowiedni do podziału klastrów.

 78
Author: Anony-Mousse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-19 17:59:25

Możesz szukać algorytmów dyskrecjonalnych. Problem dyskretyzacji 1D jest bardzo podobny do tego, o co prosisz. Decydują o punktach odcięcia, w zależności od częstotliwości, strategii wiązania itp.

Weka wykorzystuje następujące algorytmy w procesie dyskretyzacji.

Weka.filtry.nadzorowane.atrybut.Discretize

Używa metody MDL Fayyada i Irani lub kryterium MDL Kononeko

Weka.filtry.bez nadzoru.atrybut.Discretize

Używa prostego binningu

 5
Author: Atilla Ozgur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-18 10:14:33