Я намагаюся інтелектуально зібрати впорядковану колекцію. У мене є збірка з яти даних. Але я знаю, що ці дані вписуються в нерівномірних розмірів. Я не знаю, як розумно вибрати кінцеві точки, щоб правильно підходити до даних. наприклад:
Скажімо, у моїй колекції 12 предметів, і я знаю, що дані вмістяться в 3 контейнери:
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
Як я розумно вибираю свої точки прориву для бункерів ?
Поточна реалізація, яку я розбиває, розбиває дані на рівні розміри, а потім бере середнє значення кінцевих точок, щоб знайти індекси для кінця бін. Так воно працює так:
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
Отже, що-небудь нижче 3 вміщує в кошик 1, все вище 3, але нижче 3, у кошику 2, і все, що вище, ніж 3, у кошику 3. Ви можете бачити, у чому полягає моя проблема. Якщо в даних є нерівні бункери, мій метод виходить з ладу.
Друг згадав алгоритм k-найближчого сусіда, але я не впевнений.