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 :

Classification par l'analyse en composante principal (ACP) (PCA en anglais)


Sujet :

Méthodes exploratoires

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Par défaut Classification par l'analyse en composante principal (ACP) (PCA en anglais)
    Bonjour à vous tous,


    J'ai deux bases : Base1 et Base2 chacune des deux bases présente une classe différente:

    Base1 de taille (20,100) :
    20 : Lignes - nombres de cas du groupe 1
    100 : Colonnes - nombres des attributs.

    Base2 de taille (30,100) : contient les données du 2 groupe
    30 : Lignes - nombres de cas du groupe 2
    100 : Colonnes - nombres des attributs.


    La problématique:

    J'ai un nouveau cas dont je ne connais pas le groupe d'appartenance, d'une autre manière, je voudrai le classifier de sort que : soit qu'il appartient au groupe1 soit au groupe2

    Le nouveau cas (NC) est un vecteur de taille (1:100)


    Récapitulatif:

    [20,100] = Size(Bas1)
    [30,100] = Size(Bas2)
    [1,100] = Size(NC)


    Question :

    Je voudrai utiliser la PCA pour la classification du cas NC ?

    NB: PCA Analyse en composante principale.

    j'ai commencer pas faire ceci :

    [pc1,score1,latent1,tsquare1] = princomp(Base1);
    [pc2,score2,latent2,tsquare2] = princomp(Base2);


    Mais je ne sais pas comment faire pour exploiter les données retournées par princomp afin de classifier le nouveau cas NC

    Toute aide ou suggestion sera toujours la bien venu

    Très Cordialement.

  2. #2
    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
    Bonsoir,

    il faut d'abord fusionner les deux bases en une seule base B et étiqueter les individus de B1 et B2 (étiquettes 1 et 2 par exemple). L'ACP s'appliquerait alors directement à B mais elle n'est pas directement adaptée à ton problème : tu peux plutôt faire une analyse discriminante, cas particulier d'ACP.
    http://fr.wikipedia.org/wiki/Analyse_discriminante

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Par défaut
    Merci Aleph69,


    Alors si j'ai bien compris, il faut fusionner les deux base en une seule:

    Base(1:20,: )=Base1;
    Base(1:20,101)=1; % Classe 1

    Base(21:50,: )=Base2;
    Base(21:50,101)=2; % Classe 2

    Maintenant je me retrouve avec une base de taille 50x101

    [50,101] = Size(Base);

    50 : nombres de cas, 20 cas Base1 + 30 cas Base2.
    101: les attributs, sachant que le dernier attribut est réservé a la Classe.

    Je sais pas comment faire le reste, quelqu'un aura t il des idée sachant que je travaille sur Matlab

    Merci

  4. #4
    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,

    tu peux récupérer les toolboxes suivantes :
    http://www.prtools.org/
    http://waltz.felk.cvut.cz/cmp/software/stprtool/

    Selon ta version de matlab, il est possible que la première soit déjà incluse. Essaye de taper "help lda" dans matlab pour vérifier.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Par défaut
    Bonjour

    Merci Aleph69. En cherchant sur internet je suis tombé sur le fichier LDA.m suivant, il permet d'envoyer comme paramètre la base de données et le vecteur de classe, et il te retourne la matrice W.

    W = LDA(Base,Classe);

    Sauf que je ne sais pas comment utiliser la matrice W dans mon cas




    |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

    % LDA - MATLAB subroutine to perform linear discriminant analysis
    % by Will Dwinnell and Deniz Sevis
    %
    % Use:
    % W = LDA(Input,Target,Priors)
    %
    % W = discovered linear coefficients (first column is the constants)
    % Input = predictor data (variables in columns, observations in rows)
    % Target = target variable (class labels)
    % Priors = vector of prior probabilities (optional)
    %
    % Note: discriminant coefficients are stored in W in the order of unique(Target)
    %
    % Example:
    %
    % % Generate example data: 2 groups, of 10 and 15, respectively
    % X = [randn(10,2); randn(15,2) + 1.5]; Y = [zeros(10,1); ones(15,1)];
    %
    % % Calculate linear discriminant coefficients
    % W = LDA(X,Y);
    %
    % % Calulcate linear scores for training data
    % L = [ones(25,1) X] * W';
    %
    % % Calculate class probabilities
    % P = exp(L) ./ repmat(sum(exp(L),2),[1 2]);
    %
    %
    % Last modified: Dec-11-2010



    function W = LDA(Input,Target,Priors)

    % Determine size of input data
    [n m] = size(Input);

    % Discover and count unique class labels
    ClassLabel = unique(Target);
    k = length(ClassLabel);

    % Initialize
    nGroup = NaN(k,1); % Group counts
    GroupMean = NaN(k,m); % Group sample means
    PooledCov = zeros(m,m); % Pooled covariance
    W = NaN(k,m+1); % model coefficients

    if (nargin >= 3) PriorProb = Priors; end

    % Loop over classes to perform intermediate calculations
    for i = 1:k,
    % Establish location and size of each class
    Group = (Target == ClassLabel(i));
    nGroup(i) = sum(double(Group));

    % Calculate group mean vectors
    GroupMean(i,: ) = mean(Input(Group,: ));

    % Accumulate pooled covariance information
    PooledCov = PooledCov + ((nGroup(i) - 1) / (n - k) ).* cov(Input(Group,: ));
    end

    % Assign prior probabilities
    if (nargin >= 3)
    % Use the user-supplied priors
    PriorProb = Priors;
    else
    % Use the sample probabilities
    PriorProb = nGroup / n;
    end

    % Loop over classes to calculate linear discriminant coefficients
    for i = 1:k,
    % Intermediate calculation for efficiency
    % This replaces: GroupMean(g,: ) * inv(PooledCov)

    Temp = GroupMean(i,: ) / PooledCov;

    % Constant
    W(i,1) = -0.5 * Temp * GroupMean(i,: )' + log(PriorProb(i));

    % Linear
    W(i,2:end) = Temp;
    end

    % Housekeeping
    clear Temp

    end


    % EOF

  6. #6
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 13
    Par défaut
    Bonjour, je m'excuse de déterrer ce topic.

    Je me retrouve exactement dans le même problème que toi.

    Que faire de W pour classifier la base de données ? Sachant que pour la Base, on a les classes correspondantes.

    Mais pour le vecteurs (ou matrices ?) W, on a rien.

    Comment faire ?

Discussions similaires

  1. l'analyse en composante principale ACP OU CPA
    Par imagerie médicale dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 04/08/2011, 22h34
  2. Complexité temporelle de l'analyse en composantes principales (ACP)
    Par abidineb dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 08/07/2011, 22h59
  3. Réponses: 1
    Dernier message: 16/03/2011, 21h15
  4. L'analyse en composantes principales"ACP"
    Par rosa20 dans le forum Méthodes exploratoires
    Réponses: 0
    Dernier message: 17/05/2010, 13h26
  5. Analyse en composante principale (ACP ou PCA)
    Par rajaja dans le forum Méthodes exploratoires
    Réponses: 8
    Dernier message: 19/07/2009, 23h23

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