I en dimensionelle data skal du ikke bruge klyngeanalyse.
Klyngeanalyse er normalt en multivariat teknik. Eller lad mig bedre sige det omvendt: for endimensionelle data - som er ordnet fuldstændigt - er der meget bedre teknikker. Brug af k-middel og lignende teknikker her er et totalt spild, medmindre du lægger nok kræfter på at faktisk optimere dem til 1-d-sagen.
Bare for at give dig et eksempel: for k-betyder det almindeligt at bruge k tilfældige objekter som indledende frø. For en-dimensionelle data er det ret nemt at gøre det bedre ved blot at bruge de relevante kvantiler (1 / 2k, 3 / 2k, 5 / 2k osv.), Efter at have sorteret dataene en gang og derefter optimere fra dette udgangspunkt. 2D-data kan imidlertid ikke sorteres fuldstændigt. Og i et gitter vil der sandsynligvis være tomme celler.
Jeg vil heller ikke kalde det klynge. Jeg vil kalde det interval . Hvad du virkelig vil gøre er at optimere intervalgrænserne. Hvis du gør k-middel, tester den for hvert objekt, om det skal flyttes til en anden klynge. Det giver ikke mening i 1D: kun objekterne ved intervalgrænserne skal kontrolleres. Det er naturligvis meget hurtigere, da der kun er ~ 2k objekter der. Hvis de ikke allerede foretrækker andre intervaller, vil flere centrale objekter heller ikke.
Det kan være en god idé at undersøge teknikker som Jenks Natural Breaks optimering f.eks.
Eller du kan foretage en estimering af kernetæthed og se efter lokale minima for densiteten, der skal opdeles der. Det pæne er, at du ikke behøver at specificere k til dette!
Se dette svar for et eksempel, hvordan du gør dette i Python (grønne markører er klyngetilstande; rød markerer et punkt, hvor dataene er klippet; y-aksen er en log-sandsynlighed for densiteten):
PS brug søgefunktionen. Her er nogle spørgsmål om 1-d dataklynger, som du gik glip af: