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

MATLAB Discussion :

Matrice d'entrée pour le code PCA


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Matrice d'entrée pour le code PCA
    Bonjour,
    je suis en train d'écrire un code d'extraction des caractéristiques avec PCA : Principal Components Analysis, je travaille sur l'ECG , donc j'ai 11 personnes et pour chaque personne 8 échantillons ( chaque échantillon est un vecteur) , je voudrais faire l'étape de caractérisation avec PCA. mais je ne sais pas comment faire pour la matrice d'entrée ?
    voila le code de PCA utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    function [signals,PC,V] = pca3(data)
    % PCA1: Perform PCA using covariance.
    % data - MxN matrix of input data
    % (M dimensions, N trials)
    % signals - MxN matrix of projected data
    % PC - each column is a PC
    % V - Mx1 matrix of variances
    [M,N] = size(data);
    % subtract off the mean for each dimension
    mn = mean(data,2);
    data = data - repmat(mn,1,N);
    % calculate the covariance matrix
    covariance = 1 / (N-1) * data * data';
    % find the eigenvectors and eigenvalues
    [PC, V] = eig(covariance);
    % extract diagonal of matrix as vector
    V = diag(V);
    % sort the variances in decreasing order
    [junk, rindices] = sort(-1*V);
    V = V(rindices);
    PC = PC(:,rindices);
    % project the original data set
    signals = PC'* data;
    mais je ne sais pas comment construire data et comment interpréter la matrice de sortie signals pour le PCA.

  2. #2
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,

    - Sous quelle forme/format Matlab sont tes données pour l'instant ?
    - Etudies-tu les covariances entre personnes ou entre échantillons ?

    Par exemple, si tu étudies les covariances entre personnes, et que tu disposes d'une matrice de données de taille [11,8] (la ligne i étant le ième individu), il suffit de passer cette matrice à pca3 (car la doc précise data - MxN matrix of input data (M dimensions, N trials))

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour, pour chaque échantillon , j'ai un vecteur qui contient des entiers numériques (33 valeurs). je veut étudier la covariance entre personnes d'ou mon projet est dédié pour la biométrie ou je veut identifier le personne à partir de son ECG. D'ou je ne peut pas faire une matrice [11,8] parceque pour chaque échantillon j'ai un vecteur de 33 valeurs.
    je pense à faire la matrice de [88, 33] et je met succéssivement les 8 échantillons de chaque personne, mais je ne sait pas si c'est juste ou non..
    Merci bien pour votre réponse
    je suis débutante en pca et je ne sait pas l'explication de la matrice de sortie signals!!!

  4. #4
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    La notion de covariance d'un échantillon (et donc celle d'ACP) n'est de base définie que pour des données en 2D, et non pas en 3D. D'ailleurs le code de pca3 le montre bien:
    Pour une matrice data en 2D
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PC = PC(:,rindices);
    % project the original data set
    signals = PC'* data;
    Les PC sont les vecteurs propres, ie les poids des combinaisons linéaires définissant les facteurs, et signals sont les combinaisons linéaires en question (les facteurs, ayant autant d'observations que le signal initial). Cela revient à dire que les signals sont les vecteurs propres de data' * data (éssociés à des valeurs propres non nulles).

    Si cette notion est obscure, il faut revoir la définition de l'ACP.

    Finalement, le code pca3 est complétement inutile puisque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [PC,signal,V]= princomp(data)
    fournit exactement le même résultat.

    Enfin, il faut se demander comment passer de données 3D à celles 2D fournies à l'ACP. Probablement l'une des alternatives suivantes:
    - Faire la moyenne sur une dimension (par exemple la moyenne du vecteur pour chaque individu/expérience). ici on perds une dimension
    - Aplatir une dimension : par exemple étudier les covariance entre chaque paires (expérience, échantillon) sur les personnes. Ici on démultiplie le nombre de variables ou d'individus suivant l'aplatissement réalisé

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci pour votr réponse,
    est ce que vous pouvez me dire, l'explication de la matrice de sortie signal par rapport à la matrice d'entrée.
    et merci encore une fois

  6. #6
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Chaque ligne de signals est une combinaison linéaire des lignes de data, dontles poids sont dans la ligne correspondante de PC (ie les coordonées des vecteurs propres).

    Il s'agit des combinaisons linéaires successives des variables ayant une variance maximale (sous contraintes d'orthogonalité successives)

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    donc tout le problème consiste à comment écrire la matrice d'entrée???
    je pese à l'écrire comme ça :

    [ echantillon1 de personne1;
    echantillon2 de personne1;
    echantillon3 de personne1;
    ........
    echantillon8 de personne8]
    donc de taille[88,33]
    est ce que ça va laisser la meme explication de la matrice signal??

  8. #8
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    La relation facteurs/input est toujours la même, mais l'interprétation change selon les données en input, puisque ce ne sont pas les mêmes variables dont tu analyses les covariances !

    Ce à quoi tu penses est l’aplatissement des dimensions (echantillon,personne). Cela suppose que les 33 observations sont des réalisations indépendantes de la même loi (en dimension 88). Dis autrement, tu analyses les covariances entre les 88 variables (echantillon.P,personne.Q).

    la première ligne de signal sera la combinaison linéaire des 88 variables qui maximise la variance, décrite par une valeur en chacun des 33 observations

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/05/2011, 22h57
  2. Composant pour les codes à barres
    Par Bourak dans le forum Composants VCL
    Réponses: 5
    Dernier message: 11/11/2005, 17h45
  3. [IE 6.0] Plus d'affichage entre les balises [code] [/code]
    Par Trap D dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 20/10/2005, 10h39
  4. pb eval pour le code php dans une feuille xslt
    Par nipepsi dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 10/09/2004, 11h23

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