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 :

SVM multiclasses (un contre tous)


Sujet :

MATLAB

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2009
    Messages : 110
    Points : 57
    Points
    57
    Par défaut SVM multiclasses (un contre tous)
    bonjour,
    j'ai écrit un code pour classification muti (un contre tous), mais le taux de réussite de la classification reste très bas (45%), le code en question est ci dessous reste que modifier les données a classé, je ne sais pas si j'ai fait une erreur dans mon algorithme :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    %------------------------ classe pour apprentissage -----------------------
    xx=[1;1;0;2;1;0;1;2;2;0;3;0;0;0;1;1;1;1;2;1;2;0;2;1;3;0;1;3;0;1;0;0;1;0;1;0;2;2;2;2;0;1;1;2;1;1;2;0;2;2;2;1;1;2;2;0;1;0;0;0;2;1;2;0;1;2;1;2;0;1;0;1;2;0;0;1;2;2;0;0;0;1;2;0;2;2;1;1;3;1;0;1;2;1;1;2;0;1;2;1];
     
    % initialisation en supposant qu’il ya que la classe 2 et 1 (classification binaire).
     
    classe0=2*ones(100,1);
    classe1=2*ones(100,1);
    classe2=2*ones(100,1);
    classe3=2*ones(100,1);
     
    % trouvé les index des classes dans xx.  
     
    for i=1:100;
       if xx(i,1) == 0;
         x_classe0 = find(xx==0);
           elseif xx(i,1) == 1;
         x_classe1 = find(xx==1);
           elseif xx(i,1) == 2;
         x_classe2 = find(xx==2);
          else   %xx(i,1) == 3;
         x_classe3 = find(xx==3);
       end;
    end;
     
    %-------mettre chaque classe a 1 sauf la classe 3 elle restera à 2--------- 
     
    classe0(x_classe0,1)=1;
    classe1(x_classe1,1)=1;
    classe2(x_classe2,1)=1;
     
    %--------------------------------------------------------------------------
     
    SVMStruct0 = svmtrain(donnees,classe0);
    SVMStruct1 = svmtrain(donnees,classe1);
    SVMStruct2 = svmtrain(donnees,classe2);
     
    %----------------acquisition pour la classification-------------------------
     
    Group0 = svmclassify(SVMStruct0,Sample);
    Group1 = svmclassify(SVMStruct1,Sample);
    Group2 = svmclassify(SVMStruct2,Sample);
     
    % classifier le dernier groupe :
    % préparer final class label
     
    GroupF=zeros(100,1);
    for i=1:100
        if Group0(i,1)==1
            GroupF(i,1)=0;
     
        elseif Group1(i,1)==1
               GroupF(i,1)=1;
     
        elseif Group2(i,1)==1
               GroupF(i,1)=2;
     
        else  GroupF(i,1)=3;  
        end
    end
     
    %Final class label
    GroupF;
     
     
    %---------------calculé le taux de réussite-------------------------------------------
    %les classes pour faire une comparaison avec les résultats de la classification
    Classe = [0;2;0;2;0;1;0;1;1;1;1;2;2;1;1;0;2;1;0;3;3;1;1;1;1;1;2;2;2;1;0;1;1;1;1;1;0;1;1;0;2;1;3;1;0;1;2;0;2;1;2;1;1;2;2;0;0;1;2;2;0;2;3;3;1;1;0;1;2;2;1;1;1;1;0;0;2;1;3;0;3;2;0;0;2;1;0;1;2;1;2;1;0;1;1;1;2;1;1;3];
     
    comparaison = GroupF==Classe;
    taux_de_reussite = sum(comparaison)
    merci pour vos conseils, slt.

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur en science de l'environnement
    Inscrit en
    Août 2013
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur en science de l'environnement

    Informations forums :
    Inscription : Août 2013
    Messages : 97
    Points : 149
    Points
    149
    Par défaut
    Deux choses que je comprend pas:


    1) Pourquoi est ce que tu appels plusieurs fois SVMtrain et SVMclassify, l’intérêt de la méthode étant de pouvoir classifier TOUTES les classes en même temps.

    2) Tu ne précise pas la méthode qu'utilisera ton algorithme SVM ? Est ce que la fonction séparatrice sera linéaire ? ou non ?

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2009
    Messages : 110
    Points : 57
    Points
    57
    Par défaut
    1) svmtrain est par défaut un classificateur binaire seulement, mais avec l’approche un contre tous que j'ai suivie on peut le rendre multiclasse.
    2) svmtrain par défaut si tu précise pas, elle fait la séparation linéairement.
    slt

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur en science de l'environnement
    Inscrit en
    Août 2013
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur en science de l'environnement

    Informations forums :
    Inscription : Août 2013
    Messages : 97
    Points : 149
    Points
    149
    Par défaut
    Autant pour moi pour le 1).


    Es tu sur d'avoir choisis un training set bien représentatif pour chaque combinaison ? Et surtout y a-t-il une réelle différence entre les différents paramètres de tes différentes classes ?

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2009
    Messages : 110
    Points : 57
    Points
    57
    Par défaut
    Pour les combinaisons des données c'est experimental, pour chaque donnée il ya une classe et aprés pour les résultats je les connais d'avances leur classe, mais je fais une comparaison pour savoir le taux de réussite du programme.

Discussions similaires

  1. Une contre tous Svm using libsvm
    Par pretyy dans le forum MATLAB
    Réponses: 0
    Dernier message: 15/01/2015, 09h58
  2. Classification SVM multiclasse
    Par gh_salsa2014 dans le forum Signal
    Réponses: 0
    Dernier message: 03/04/2014, 19h25
  3. [Débutant] classification avec SVM un contre tous
    Par moha_namb dans le forum Images
    Réponses: 9
    Dernier message: 16/06/2011, 22h27
  4. Réponses: 18
    Dernier message: 17/04/2010, 09h29
  5. classificateur svm un contre tous
    Par usthb23 dans le forum Images
    Réponses: 3
    Dernier message: 16/02/2010, 10h06

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