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 :

Nuage de points


Sujet :

Algorithmes et structures de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 10
    Par défaut Nuage de points
    Bonjour,

    A partir de coordonnées diverses de points dans un repère en 2D, je dois arriver à les rassembler en nuage de point distinct (couleurs différentes à l'affichage).

    J'aimerais savoir si vous connaissiez un algorithme / une méthode mathématique pour y arriver?

    J'avais pensé à un parcours des points de proche en proche, avec une distance fixée à l'avance qui définirait l'appartenance ou non au même nuage, mais cette méthode me parait très coûteuse en calcul et pas très rigoureuse mathématiquement parlant.

    Merci d'avance.
    Cordialement,
    Jonnyd

  2. #2
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Il y a de nombreuses approches, tout dépend de ce que tu connais ou pas de ces nuages de points. La méthode la plus simple est sans doute la méthode des k-means (et toutes leurs dérivées) Ce problème a été abordé un très grand nombre de fois sur le forum. N'hésite pas à faire une recherche avec ce terme et à poser d'éventuelles questions sur des points que je ne comprendrais pas ou pour d'autres approches.

  3. #3
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonjour,

    pour compléter la réponse de PRomu@ld, l'alternative classique à la méthode des k-means et à ses variantes est la classification ascendante hiérarchique (CAH). Mathématiquement, elle revient à minimiser la distance des points au centre de leur groupe (variance intra-classe) et à maximiser la distance entre les groupes (variance inter-classe).

    Si tu connais le nombre de groupes, c'est bien d'utiliser k-means. Sinon, si le nombre de points est peu élevé, c'est mieux d'utiliser la CAH qui va trouver "automatiquement" le nombre de groupes. Enfin, si le nombre de groupes est inconnu et le nombre de points grand, il faut recourir à une approche hybride en 3 étapes :

    1. lancer k-means avec un nombre relativement élevé de groupes
    2. lancer une CAH sur les centres des groupes trouvés et récupérer le nombre de groupes
    3. relancer le k-means avec le nombre de groupes trouvé à l'étape 2.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 10
    Par défaut
    Je ne connais que les coordonnées des points, je vais donc me renseigner sur la méthode "hybride". En tout cas merci de votre aide.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 10
    Par défaut
    Vous n'auriez pas un lien complet à me passer sinon? Je ne trouve que des tp ou des exercices utilisant la méthode des k-means, pas d'explication en profondeur..

  6. #6
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Même si la page est plutôt hideuse tu as toujours ça :

    http://people.revoledu.com/kardi/tut...ean/index.html

    La page wikipedia fonctionnera tout aussi bien.

  7. #7
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonsoir,

    regarde donc sur weka pour tester quelle méthode donne les meilleurs résultats dans ton cas.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 10
    Par défaut
    Salut,
    J'ai étudié l'algorithme ce week-end, et voilà ce que j'en ai retenu :
    On détermine des centroides en testant toutes les combinaisons de points pouvant être ces centroides et en y affectant le reste de points en testant la distance point - centroide, la distance la plus petite déterminant cette affectation. On retient la combinaison de centroide lorsque les moyennes des distances points-centroides est la plus proche.
    Ce que je n'ai pas vraiment compris, c'est comment on détermine les centroides?
    Si on teste toutes les combinaisons, j'ai peur que ce soit beaucoup trop long (et assez difficile à coder, étant donné qu'il faudrait garder en mémoire chaque essai pour trouver le meilleur). Par exemple, pour un cas de 700points et de 4 nuages de points, je devrais tester toutes les combinaisons de 4 parmi 700, en calculant à chaque fois toutes les distances entre les 696points restants et les quatre centroides, puis enregistrer toutes ces informations (je vous laisse imaginer la taille du tableau...).
    Enfin bref, j'imagine que j'ai du passer à coté de quelque chose...
    Merci d'avance,
    Jonnyd

  9. #9
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 10
    Par défaut
    Yep j'avais pas vu l'étape du centre de gravité.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 10
    Par défaut
    Salut,
    J'ai coder un algo des k-means en C++ qui me donne d'excellents resultats quand je connais a l'avance le nombre de nuages de point a determiner, mais je ne vois pas comment faire pour reutiliser mon algo quand je ne connais pas le nombre de nuage de point.
    J'avais pense a tester successivement differentes valeurs, mais je ne trouve pas de parametre qui me permette de dire "Ah oui, c'est clairement mieux avec sept nuages qu'avec huit".
    Enfin bref, si qqn avait une idee ce serait assez cool.
    Merci d'avance.

  12. #12
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonjour,
    je t'ai déjà donné la réponse : il faut faire un k-means en choisissant un nombre relativement élevé de clusters puis appliquer une cah aux clusters trouvés pour les regrouper en un nombre naturel de clusters. Enfin, relancer un k-means en partant des clusters trouvés par la CAH. C'est ce qu'on appelle une approche hybride et tu dois pouvoir trouver des informations dessus avec google très certainement.

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jonnyd Voir le message
    J'avais pensé à un parcours des points de proche en proche, avec une distance fixée à l'avance qui définirait l'appartenance ou non au même nuage, mais cette méthode me parait très coûteuse en calcul et pas très rigoureuse mathématiquement parlant.
    Cela dépend si tu dois faire un regroupement relatif ou un regroupement absolu...

    Pour les regroupements relatifs, effectivement les solutions qu'on t'a donné sont celles à utiliser..

    Pour des regrupements absolus (tu connais la distance de séparation minimale), ton idée marche parfaitement, et est même en O(N logN) si elle est bien codée.. Et elle est rigoureuse mathématiquement, mais dans ce cas-là seulement : on a une contrainte qui est la distance minimale...

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 10
    Par défaut
    J'ai finit mon projet, merci pour votre aide.

Discussions similaires

  1. Equation d une sphere a partir d un nuage de points
    Par MDiabolo dans le forum Algorithmes et structures de données
    Réponses: 27
    Dernier message: 05/05/2006, 16h40
  2. Plan a partir d'un nuage de points
    Par Pedro dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 10/04/2006, 15h34
  3. nuage de points
    Par uriotcea dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 25/03/2006, 10h29
  4. nuages de points sont-ils dans une zone??
    Par smedini dans le forum Algorithmes et structures de données
    Réponses: 26
    Dernier message: 21/02/2006, 11h01
  5. interpolation couleur entre nuage de points
    Par soubre dans le forum OpenGL
    Réponses: 2
    Dernier message: 02/07/2005, 15h52

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