J'essaie de classer intelligemment une collection triée. J'ai une collection de éléments de données. Mais je sais que ces données s'inscrivent dans bacs de taille inégale. Je ne sais pas comment choisir intelligemment les points de terminaison pour ajuster correctement les données. par exemple:m
Supposons que j'ai 12 articles dans ma collection et que je sais que les données tiendront dans 3 bacs:
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
Comment choisir intelligemment mes points d'arrêt pour les casiers ?
L'implémentation actuelle que j'ai divise les données en bacs de taille égale, puis prend la moyenne des points d'extrémité pour trouver les index pour la fin des bacs. Donc ça marche comme ça:
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
Alors maintenant, tout ce qui est inférieur à 3 rentre dans le bac 1, tout ce qui est supérieur à 3 mais inférieur à 3 rentre dans le bac 2, et tout ce qui dépasse 3 rentre dans le bac 3. Vous pouvez voir quel est mon problème. Si les données ont des cases inégales, ma méthode échoue.
Un ami a mentionné l'algorithme du plus proche voisin, mais je ne suis pas sûr.
la source
Réponses:
Je pense que ce que vous voulez faire est appelé clustering. Vous souhaitez regrouper vos "valeurs" de telle sorte que des valeurs similaires soient collectées dans le même bac et que le nombre total de bacs soit prédéfini.
Vous pouvez résoudre ce problème en utilisant l' algorithme de clustering k-means . Dans MATLAB, vous pouvez le faire en:
L'appel ci-dessus regroupera les valeurs en
Values
trois groupes de sorte que la variance intra-groupe soit minimale.la source
k-means est une option, mais elle n'est pas très sensible pour les données à 1 dimension. Dans les données unidimensionnelles, vous avez un énorme avantage: les données peuvent être entièrement triées.
Jetez plutôt un œil à l'optimisation des ruptures naturelles :
http://en.wikipedia.org/wiki/Jenks_natural_breaks_optimization
la source