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 :

[classify] apprentissage machine [Débutant]


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 68
    Points : 26
    Points
    26
    Par défaut [classify] apprentissage machine
    Bonjour à tous,

    Suite à pas mal de recherche, je n'arrive toujours pas à résoudre mon problème ...
    Je cherche à faire "un apprentissage machine" en passant par la fonction Classify de Matlab

    Mes données :
    Ce sont des valeurs d'angles au cours du temps (sur 200pts)
    Pour 3 vitesses différentes
    Pour 11 personnes
    10 essaies par personnes

    Mon but :
    Permettre de trouver une distinction entre ces 3 vitesses par l'intermédiaire des angles


    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
    %Je charge mes données en ligne
    AmplitudeS1LTrans = AmplitudeS1L';   %angles Vitesse Lente
    AmplitudeS1RTrans = AmplitudeS1R';   %angles Vitesse Normale
    AmplitudeS1NTrans = AmplitudeS1N';   %angles Vitesse Rapide
     
    %Je crée mes matrices initiales
    Training = zeros(24,200);  %24essaies de 200pts
    Sample = zeros(6,200);  %6essaies de 200pts
    Group = zeros(24,200); %24 reconnaissances
    Class = zeros(24,200); 
     
     
    %Paramétrage du Groupe Training avec 80% des données (80%*10=8)
    %J'intercale mes donnée : L-N-R-L-N-R ....en ligne
    for i = 1 : 8
        if i == 1
            Training(1,:) = AmplitudeS1LTrans(1,:);
            Training(2,:) = AmplitudeS1NTrans(1,:);
            Training(3,:) = AmplitudeS1RTrans(1,:);
        end
        if i >= 2 
            Training(i+i+i-2,:) = AmplitudeS1LTrans(1,:);
            Training(i+i+i-1,:) = AmplitudeS1NTrans(1,:);
            Training(i+i+i,:) = AmplitudeS1RTrans(1,:);
        end
    end
     
    % Paramétrage du Groupe Sample(Test) avec 20% des données
    % Je prends les 2 dernières lignes de L-N-R
            Sample(1,:) = AmplitudeS1LTrans(9,:);
            Sample(2,:) = AmplitudeS1NTrans(9,:);
            Sample(3,:) = AmplitudeS1RTrans(9,:);
            Sample(4,:) = AmplitudeS1LTrans(10,:);
            Sample(5,:) = AmplitudeS1NTrans(10,:);
            Sample(6,:) = AmplitudeS1RTrans(10,:);
     
    % Paramétrage du Groupe Group(Label) avec les correspondances 
    % Ceci me permet d'avoir un fichier avec les correspondances de chaque vitesse.
    %1 pour L, 2 pour N et 3 pour R afin de comparer ensuite les résultats 
    for i = 1 : 8
        if i == 1
            Group(1,:) = 1;
            Group(2,:) = 2;
            Group(3,:) = 3;
        end
        if i >= 2 
            Group(i+i+i-2,:) = 1;
            Group(i+i+i-1,:) = 2;
            Group(i+i+i,:) = 3;
        end
    end
    Jusque là tout fonctionne et je pense avoir classé mes données correctement.
    Ensuite, je dois lancer la fonction classify et là tout ce complique !
    Je ne sais pas si je dois faire une boucle sur mes 200 colonnes ou sur mes 24 ligne (80% des données) ou ne pas en faire ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Class] = classify(Sample, Training, Group);
    Voici l'erreur
    ??? Error using ==> grp2idx at 20
    Grouping variable must be a vector or a character array.
    
    Error in ==> classify at 126
    [gindex,groups] = grp2idx(group);
    J'aimerais vois si cette fonction est capable de me différencier un jeu de données par la suite sans lui préciser la vitesse ... ceci juste en regardant les amplitudes des angles sur 200pts

    Si vous avez des idées ou des conseils, je suis fortement preneur.
    Je vous remercie d'avance pour l'ensemble de votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 110
    Points : 55
    Points
    55
    Par défaut [classify] apprentissage machine
    Bonjour, comme j'ai compris, il faut que groups soit un vecteur avec des nombres ou des string mais un vecteur de toute manière

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Training = zeros(24,200);  %24essaies de 200pts
    Sample = zeros(6,200);  %6essaies de 200pts
     
    Group = zeros(24,1); %24 reconnaissances
     
    Class = zeros(24,200);
    En tout cas c'est ce que j'ai compris

    Bon courage car rien n'est évident avec cette fonction !!!!

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 68
    Points : 26
    Points
    26
    Par défaut
    Bonjour,

    Merci déjà pour cette correction, je viens seulement de voir votre message et j'ai réussi à le corrigé dans la semaine précédente.

    Maintenant, un autre problème se porte à moi ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ??? Error using ==> classify at 233
    The pooled covariance matrix of TRAINING must be positive definite.
    Je comprends avoir un problème avec ma matrice de covariance, pensez vous que cette erreur peut être du à la façon dont j'ai classée mes données dans le sample et le training ?

    Lent
    normal
    rapide
    lent
    normal
    rapide
    ...

    Merci

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 68
    Points : 26
    Points
    26
    Par défaut
    Problèmes résolu !


    Dans un premier temps, cela dépend de la version de Matlab que vous utilisez ...

    Ensuite, pour que cela fonctionne, il faut mettre les lignes 313, 314 et 315 en commentaire dans la fonction classify.m et le programme fonctionne très bien.

    Je vous le redonne
    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
    clear all
     
    load amplitude
    %Importer la matrice avec les amplitudes
            Training(1:8,:) = AmplitudeS1LTrans(3:10,:);
            Training(9:16,:) = AmplitudeS1NTrans(3:10,:);
            Training(17:24,:) = AmplitudeS1RTrans(3:10,:);
     
    % Paramètrage du Groupe Sample(Test) avec 20% des données
            Sample(1,:) = AmplitudeS1RTrans(1,:);
            Sample(2,:) = AmplitudeS1NTrans(1,:);
            Sample(3,:) = AmplitudeS1LTrans(1,:);
            Sample(4,:) = AmplitudeS1RTrans(2,:);
            Sample(5,:) = AmplitudeS1NTrans(2,:);
            Sample(6,:) = AmplitudeS1LTrans(2,:);
     
    % Paramètrage du Groupe Group(Label) avec les correspondances 
    for i = 1 : 8;
             Group(i,1) = 0;
    end
     
    for i = 9 : 16;
             Group(i,1) = 1;
    end
     
    for i = 17 : 24;
            Group(i,1) = 2;
    end
     
        [Class] = classify([Sample], [Training], Group,'quadratic');

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

Discussions similaires

  1. apprentissage non supervisé .......
    Par ratbert dans le forum Statistiques, Data Mining et Data Science
    Réponses: 7
    Dernier message: 22/02/2008, 12h23
  2. Code machine
    Par Willand dans le forum Assembleur
    Réponses: 2
    Dernier message: 20/01/2003, 18h44
  3. Lancer un programme, mais sur une autre machine
    Par GOUGOU1 dans le forum Réseau
    Réponses: 12
    Dernier message: 08/12/2002, 20h36
  4. Réponses: 4
    Dernier message: 10/09/2002, 17h09
  5. apprentissage du C est-il necessaire pour C++ ?
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 02/05/2002, 12h56

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