IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Grouper des plages de valeurs


Sujet :

Algorithmes et structures de données

  1. #1
    Membre confirmé Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Points : 513
    Points
    513
    Par défaut Grouper des plages de valeurs
    Bonjour,

    Voilà le problème : j'ai un nombre indéfini de paires de valeurs numériques, que je souhaite regrouper selon leur amplitude et leurs grandeurs, en minimum 1 groupe et maximum N groupes (N serait fixe, par exemple 6, mais le nombre de paires de valeurs serait compris entre 1 et 20).
    La finalité étant d'affecter automatiquement des axes des ordonnées à des courbes sur un graphe.
    Les paires de valeurs représentent chaque paire 'valeur min connue / valeur max connue' pour une courbe. Il peut y avoir de 1 à 20 courbes, et seulement de 1 à 6 axes ; les courbes sont connues et je cherche le moyen le plus efficace pour arriver à déterminer les axes...
    A l'oeil nu, ça paraît évident : si j'ai {0 / 10}, {1 / 12}, {-50 / -55}, je vais créer 2 axes : un avec des valeurs de 0 à 12, l'autre de -50 à -55. mais j'ai du mal avec l'algo, d'autant que les valeurs peuvent être très proches. Si vous avez déjà eu vent d'une méthode qui pourrait m'aider, je suis preneur

  2. #2
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Tou dois tout d'abord définir une distance entre tes objet (tes couples). Ca peut par exemple être la distance entre les min + la distance entre les max. A toi de voir ce qui marche.

    Puis tu fais des clusters par un algo d'aggrégation. Ce sont des algos qu'on trouve en analyse de données. Je ne connais plus leurs noms, mais en cherchant dans cette direction tu trouveras.

    un des algos possibles est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    tu part avec N clusters de 1 élément chacun.
     
    tant que N > n choisi
       pour chaque cluster,
          chercher le cluster le plus proche au sens de l'inertie finale.
          noter V(N) ce meilleur voisin et I(N) l'inertie finale de la réunion des deux clusters
       fin boucle
     
       réunir à son meilleur voisin le clusters qui a I(N) minimal 
    fin boucle
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  3. #3
    Membre confirmé Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Points : 513
    Points
    513
    Par défaut
    Salut,

    merci pour ta réponse, je vais chercher dans ce sens. Je suis nul en algo, ce genre de trucs ne me serait jamais venu à l'esprit ...

    Je posterai ma solution ici (ou ma question suivante si j'en ai une

  4. #4
    Membre confirmé Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Points : 513
    Points
    513
    Par défaut
    Bon, finalement j'ai contourné le problème et j'ai fait autrement...
    Le souci c'est qu'il y a une autre fonctionnalité : ajouter / retirer des courbes après coup (et des axes aussi, par la même occasion, tant qu'à faire...).

    Donc j'ai procédé autrement, je traite les courbes - donc les plages de valeurs - une par une : si aucun axe existant ne convient, j'en ajoute un avec les mêmes valeurs min/max que la courbe, et si le nombre max d'axe est déjà atteint j'affecte la courbe au 'moins pire' ('moins pire' que je détermine arbitrairement avec des constantes). Voilà, merci en tout cas

Discussions similaires

  1. Grouper des donnees par valeur d'une donnee
    Par yaya_la_rafale dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 23/04/2015, 10h27
  2. Macro pour grouper des lignes sur une plage qui peut varier
    Par RichRich59 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/01/2011, 13h04
  3. Macro pour grouper des lignes sur une plage qui peut varier
    Par girardinho dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/07/2010, 09h43
  4. Recherche des bornes de plages de valeurs consécutives
    Par elsuket dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 01/12/2009, 10h21
  5. Grouper des valeures d'un tableau
    Par bibi5883 dans le forum Débuter
    Réponses: 7
    Dernier message: 21/05/2007, 10h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo