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 :

Clustering et approximation de courbes


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Points : 47
    Points
    47
    Par défaut Clustering et approximation de courbes
    Bonjour à tous.

    Je cherche à analyser un graphique composé de points.
    Mon graphique, à première vue, peut être partionné en 3 amas de points distincts, chaque amas représentant une courbe du 3ème degré.
    Mes questions sont les suivantes :

    1. Comment distinguer ces 3 amas les uns des autres ?
    2. Comment, une fois "séparés" les uns des autres, obtenir 3 fonctions fittant au mieux les points situés dans chaque amas ?

    Algorithmiquement un clustering par k-mean me semble être une bonne idée pour obtenir ces amas.
    Pour l'approximation des courbes, c'est une autre histoire...

    En fait, je parcours le site Mathwork, ainsi que le help, mais il y a tellement de fonctions différentes que je ne sais pas trop lesquelles seraient adaptées à ce problème.

    Pourriez-vous me donner une indication ou des pistes à envisager ?

    Merci d'avance pour vos réponses !

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Points : 47
    Points
    47
    Par défaut
    Personne ?

    J'aimerais vraiment parvenir à trouver un "cluster" par courbe. Ces courbes ne se croisent pas...

    Lorsque j'utilise kmeans, il me donne des clusters reprenant des points de ces deux courbes.

    Comment puis-je arriver à les distinguer l'une de l'autre ?

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    peux-tu nous montrer une image de la disposition de tes points?

    Pour l'ajustement de tes courbes, si tu as accès à la curve fitting toolbox, elle est dédié à ce genre de problème. (sinon, tu peux jeter un coup d'oeil sur le matlab file exchange)
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Points : 47
    Points
    47
    Par défaut
    Voila.

    Comme vous le voyez, j'ai énormément de points (d'où l'aspect "épais" de mes traits).

    Idéalement, je souhaiterais obtenir deux clusters :

    1. Le premier avec le petit segment de droite tout au-dessus, et le second segment de droite en partant du dessus (donc celui juste après lui)
    2. Le second avec le segment de droite tout en bas

    Je voudrais ensuite fitter une courbe sur les points de chacun de ces clusters afin d'en comparer les équations...

    Pensez-vous que c'est possible ?
    Images attachées Images attachées  

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Tout d'abord, je commencerai par faire un peu de tri dans tes données : si j'ai bien compris, les nuages de point entre ton premier et deuxième segment sont inutile, tu peux donc les supprimer.

    Ensuite pour le kmean, je le ferai avec 3 clusters puis si il arrive trouver les trois, tu fusionnes les 2 du haut. Par contre je ne vois pas bien comment tu veux ajuster une courbe sur le premier nuage que tu as décrit.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Points : 47
    Points
    47
    Par défaut
    Merci Magelan pour tes conseils.
    Je vais essayer de supprimer les points inutiles.

    En ce qui concerne l'ajustement de la courbe, comment dire, je veux trouver une courbe qui va, grossièrement, me donner une idée générale de l'allure de mon "cluster de segments de droite". Par exemple, est-ce que ces segments forment une fonction plutôt linéaire, ou plutôt du second degré, etc.

    En fait, j'avais lancé un kmean pour k=3 un peu "comme ça" histoire de voir ce que la fonction MATLAB pouvait donner, et j'ai obtenu trois clusters que je décrirais comme ça : Mon graphique avait l'air divisé de manière très équitable en trois, comme si on l'avait divisé par 2 droites verticales (type drapeau français !). J'ai trouvé cela assez étrange...
    Peut-être dois-je aussi spécifier des paramètres particuliers afin qu'il ne prenne pas des données en "tas" mais plutôt des données étalées en longueur (type algorithme de Jarvis-Patrick, plus appliqué aux problèmes de clustering de data biologiques) ?

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Je déplace dans la section algo pour avoir un plus grand nombre d'avis.

    Perso, je travaillerais uniquement sur les ordonnées en entree des kmeans, mais il existe peut etre d'autres algo/méthodes plus adaptés a ton problème.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  8. #8
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    je m'excuse, mais un point de vue bête me fait penser qu'il manque quelque chose pour qu'on puisse t'aider...

    Là je ne vois pas vraiment de segments de droite.. Je vois des groupes de points, plus ou moins alignés suivant des courbes, et je vois plusieurs ordonnées pour le même x...


    Il nous faudrait donc, je pense, plus d'informations sur ce que tu as en entrée, et ce que tu cherches réellement...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #9
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Il parait relativement facile de séparer ta "zone bleue" en parties connexes. Pour le reste, il faudrait savoir plus pré"cisément ce que tu as besoin de faire.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Points : 47
    Points
    47
    Par défaut
    souviron34 : Effectivement ce ne sont pas des segments de droite à proprement parler. J'ai nommé ainsi des amas de points qui ressemblent simplement à des "segments de droite", mon but étant, en définitive, de trouver des fonctions qui fitteraient au mieux ces amas de points.
    Ce que j'ai en entrée est en fait une image. Ce que vous voyez sur ce graphique c'est le contour de l'objet de cette image (un peu découpé).
    Ce que je voudrais c'est calculer deux fonctions : une fonction représentant "approximativement" la courbe représentée par "les deux premiers segments de droites", en partant du haut de l'image, et une seconde fonction, faisant la même chose mais pour le "segment de droite" situé tout en bas de l'image. Après, je comparerai ces fonctions.

    Nebulix, qu'entends-tu par séparer ma zone bleue en parties connexes ?

    J'espère avoir été un peu plus claire dans l'exposé de mon problème ?

  11. #11
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    oui, ça va mieux, et ta question serait mieux dans la partie images...

    Et il y a tout un tas d'algos spécialisés pour ça... Et je pense même que la réponse à ta question figure dans cette rubrique..


    et "ce qui se conçoit bien s'énonce clairement"...


    Là, tu commences par nous poser un problème de géométrie 1D ("un graphique"), qui a des apparences de 2D, et donc on propose des solutions... Mais finalement on apprend que c'est du vrai 2D... et il y a des algos spécifiques, c'est pour ça qu'il y a un sous-forum exprès...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. Clustering et approximation de fonction
    Par nanath02 dans le forum Traitement d'images
    Réponses: 6
    Dernier message: 12/01/2011, 13h30
  2. [Bézier] Approximation de courbes
    Par Cthulhu_RLyeh dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 26/10/2008, 16h33
  3. Réponses: 4
    Dernier message: 22/05/2007, 17h08
  4. approximation de courbes
    Par diam's dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 09/03/2007, 01h06
  5. approximation de courbe par des segments
    Par dseguret dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 27/02/2007, 21h03

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