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

Méthodes exploratoires Discussion :

PCA et varimax


Sujet :

Méthodes exploratoires

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Par défaut PCA et varimax
    Bonjour,

    On m'a conseillé d'expliquer mon problème dans cette rubrique alors voici...

    J'ai utilisé une ACP pour rechercher ce qui varie le plus dans mes images de 100x100pixels. Donc j'ai utilisé princomp sur une matrice de 3150 observations par 10000. J'obtiens donc COEFF, LATENT et SCORE. Maintenant j'aurais voulu faire une rotation varimax sur mes données. Donc première question:

    1. Il est juste de faire une PCA spatial puis une rotation varimax mais dans ce cas il faut bien faire une rotation sur les loadings (COEFF) ET sur les scores n'est ce pas? puis ensuite la PCA temporelle sur les scores qui ont subis la rotation? Et pour finir une rotation sur les SCORE et les COEFF de cette PCA temporelle?

    2. J'ai donc essayé ca:

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    COEFFnew = rotatefactors(COEFF);
    SCOREnew = rotatefactors(SCORE);
    Malheureusement j'ai ce message d'erreur:

    ??? Error using ==> svd
    Input to SVD must not contain NaN or Inf.

    Error in ==> rotatefactors>orthomax at 205
    [L, D, M] = svd(A' * (d*B.^3 - gamma*B * diag(sum(B.^2))));

    Error in ==> rotatefactors at 152
    [B, T] = orthomax(A, 1, normalize, reltol, maxit);
    Est-ce que je fais quelque chose de faux? Comment puis-je résoudre ce problème?

    Merci d'avance pour votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Cette discussion fait suite à celle-ci : Matlab et varimax

    Citation Envoyé par soeursourire Voir le message
    On m'a conseillé d'expliquer mon problème dans cette rubrique alors voici...
    Devinez qui ?

  3. #3
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    Dut t'a dit de passer sur le forum Algo et il a tout à fait raison. Mais maintenant, tu ne sembles pas t'être rendu compte que tu n'étais plus sur le forum Matlab. Tu me sembles présenter un problème de méthodologie que l'on rencontre très souvent sur ce site: tu cherches à savoir comment programmer avant de te demander ce que tu dois programmer. Tu as un problème (de traitement d'images, si j'ai bien compris). Commence par déterminer quels algorithmes tu dois appliquer à tes données, et quand tu seras absolument certain d'avoir achevé cette étape. Ensuite, tu pourras commencer à écrire ton programme, en évitant d'utiliser des "boîtes noires" (c'est peut-être plus rapide, mais on risque de ne pas comprendre ce qu'on fait).
    Jean-Marc Blanc

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Par défaut
    Ben pourtant ca me parait clair dans ma tete ce que je veux faire... J'ai tout un tas d'images qui ont été enregistrées sous 3 conditions differentes (50 images par observation). Je veux donc
    1. Faire une ACP spatiale sur toutes mes observations avec mes pixels comme variables pour voir OU je trouve des variations dans l'image (ce serait bien d'avoir des zones differentes selon les conditions). -> LOADINGS + SCORES
    2. Faire une rotation varimax sur les résultats de ces données
    3. Faire une ACP temporelle sur les résultats de l'ACP précédentes pour voir QUAND ces variations se passent dans le temps ->LOADINGS + SCORES
    4. De nouveau une rotation varimax sur les resultats pour que ce soit plus clair..

  5. #5
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    pourtant ca me parait clair dans ma tete
    Pour moi, ce n'est pas du tout clair. J'explicite pourquoi:
    100x100pixels
    une matrice de 3150 observations par 10000
    D'abord, ce n'est pas une matrice 3150x10000 mais un tableau, semble-t-il plutôt 3150x100x100.
    J'ai utilisé une ACP
    Comment, par quel algorithme?
    COEFF, LATENT et SCORE
    Comment as-tu défini et calculé ces trois variables?
    faire une rotation varimax
    Quelles sont les formules qui définissent cette rotation?
    ??? Error using ==> svd
    Input to SVD must not contain NaN or Inf.

    Error in ==> rotatefactors>orthomax at 205
    [L, D, M] = svd(A' * (d*B.^3 - gamma*B * diag(sum(B.^2))));

    Error in ==> rotatefactors at 152
    [B, T] = orthomax(A, 1, normalize, reltol, maxit);
    Tu sembles avoir utilisé la fonction rotatefactors sans trop te demander ce qu'il y avait dedans. Or les messages d'erreur montrent de manière évidente que cette fonction fait appel à la fonction svd (valeurs singulières). C'est donc à toi de décortiquer rotatefactor pour voir pourquoi la matrice à laquelle tu appliques svd est erronée.

    Jean-Marc Blanc

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Par défaut
    Effectivement ce n'etait pas clair..
    Alors mes images font 100pixels de hauteur par 100pixels de largeur mais je les transforme en vecteur colonne. Et oui j'ai donc un tableau de 3150 par 10000.
    J'utilise princomp pour calculer mon ACP et COEFF SCORE et LATENT sont les resultats de cette ACP.
    J'utilise bien rotatefactors qui par defaut utilise la rotation varimax. Et svd y'a pas le code avec dans Matlab apparemment.. ce qui est un peu embêtant pour traquer ce qui ce passe dans la fonction non?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PCA Varimax en C++
    Par soeursourire dans le forum C++
    Réponses: 5
    Dernier message: 27/01/2009, 16h39
  2. Matlab et varimax
    Par soeursourire dans le forum MATLAB
    Réponses: 13
    Dernier message: 15/01/2009, 16h32
  3. [princomp] Etude ACP (ou PCA)
    Par nonoprig dans le forum MATLAB
    Réponses: 0
    Dernier message: 07/02/2008, 17h22
  4. Algorithmes PCA et PLS
    Par Tintou dans le forum MATLAB
    Réponses: 3
    Dernier message: 20/07/2007, 09h02
  5. PCA centrer réduir
    Par ancrou dans le forum MATLAB
    Réponses: 2
    Dernier message: 09/07/2007, 11h42

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