Staram się inteligentnie bin posortować kolekcję. Mam kolekcję fragmentów danych. Ale wiem, że te dane wpisuje się nierówno wielkości pojemników. Nie wiem, jak inteligentnie wybrać punkty końcowe, aby odpowiednio dopasować dane. na przykład:
Powiedzmy, że mam w mojej kolekcji 12 produktów i wiem, że dane zmieszczą się w 3 pojemnikach:
Index: 1 2 3 4 5 6 7 8 9 10 11 12
Value: 1 1 1 3 3 3 3 3 3 5 5 6
Jak inteligentnie wybrać moje punkty przerwania dla pojemników ?
Obecna implementacja, którą mam, dzieli dane na pojemniki o równej wielkości, a następnie bierze średnią punktów końcowych, aby znaleźć indeksy na końcu pojemników. Działa to tak:
Index: 1 2 3 4 5 6 7 8 9 10 11 12
Value: 1 1 1 3 3 3 3 3 3 5 5 6
first break evenly: i = 1-4, 5-8, 9-12
mean endpoints: between 4 and 5: (3+3)/2 = 3
between 8 and 9: (3+3)/2 = 3
Więc teraz wszystko poniżej 3 mieści się w bin 1, wszystko powyżej 3, ale poniżej 3 pasuje do bin 2, a wszystko powyżej 3 mieści się w bin 3. Możesz zobaczyć, na czym polega mój problem. Jeśli dane mają nierówne pojemniki, moja metoda zawodzi.
Znajomy wspomniał o algorytmie k-najbliższego sąsiada, ale nie jestem pewien.