Estoy tratando de agrupar inteligentemente una colección ordenada. Tengo una colección de piezas de datos. Pero sé que estos datos se ajustan a contenedores de tamaños desiguales. No sé cómo elegir inteligentemente los puntos finales para que se ajusten adecuadamente a los datos. por ejemplo:
Digamos que tengo 12 elementos en mi colección, y sé que los datos encajarán en 3 contenedores:
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
¿Cómo elijo inteligentemente mis puntos de interrupción para los contenedores de ?
La implementación actual que tengo divide los datos en bins de tamaño uniforme y luego toma el promedio de los puntos finales para encontrar los índices para el final de los bins. Entonces funciona así:
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
Así que ahora cualquier cosa por debajo de 3 cabe en la bandeja 1, cualquier cosa por encima de 3 pero por debajo de 3 cabe en la bandeja 2, y cualquier cosa por encima de 3 cabe en la bandeja 3. Puede ver cuál es mi problema. Si los datos tienen bins desiguales, mi método falla.
Un amigo mencionó el algoritmo vecino k-más cercano pero no estoy seguro.