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 :

Sous matrice Cross Validation


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 34
    Points : 21
    Points
    21
    Par défaut Sous matrice Cross Validation
    Bonjour à tous,

    Voilà, j'ai extrait une sous matrice d'une matrice pour générer un modèle
    avec cette sous matrice...Je voudrais maintenant tester le modèle sur la ligne qui n'a pas servi à générer le modèle.
    J'y suis presque mais quelque chose m'échappe.
    load croisement.txt;
    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
    for n= 1:212;
    V = [croisement(1:n-1,:);croisement(n+1:212,:)];
    %Construction des vecteurs x et y
    x = V(:,3:4);
    y = V(:,1:2);
    %Recalage des valeurs entre 0 et 1
    [x Mx mx] = scale(x);
    [y My my] = scale(y);
    %Construction de la matrice de transformation
    a = x(:,1);
    b = x(:,2);
    one = ones(length(a),1);
    T = [a b one];
    % obtention de la matrice des coefficents  (coeff = (M*T)\(M*xx))
    P = (T'*T)\(T'*y);
    yp=T*P;   % c'est à cet endroit qu'il faut que j'indique que T  prenne seulement la ligne qui n'ait pas servi à générer le modèle
    yp = descale(yp,My,my);
    y = descale(y,My,my);
    rmse = sqrt(mean(sum((yp-y).^2,2)));
    M(n)=rmse;
    end
    Merci d'avance

    MG

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    c'est simplement :

    non?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    c'est quoi ta question ?
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    Ma question est de savoir comment récuperer la ligne qui n'a pas servi à générer le modèle pr pouvoir la transformer.

  5. #5
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Est-ce que la réponse de Magellan t'a aidée ?

    La question telle que tu la poses est spécifique à ton problème. Ce qu'on a besoin pour t'aider c'est une question davantage exprimée en terme de Matlab : une question à laquelle on pourrait répondre sans avoir eu à comprendre tous les détails spécifiques à ton problème.

    Par exemple si tu nous montre un code qui marche pas, et l'erreur que ça te sort, c'est + facile.
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    En fait, le code que j'ai inséré au départ fonctionne. Le problème est que quand je calcule la prédiction (yp), je la calcule pour les lignes qui ont servi à determiner les coefficients de transformation (P).Ce n'est dc pas une bonne erreur de prédiction..Moi, j'aimerai juste recuperer la ligne exclue de T et la multiplier par P (P étant determiné à l'aide des autres lignes).

    Merci d'avance

    MG

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    La ligne exclue de T, c'est croisement(n,:), donc ce que je t'ai donné devrais convenir, non?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    Non, cela ne marche pas, voici l'erreur..

    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
    load croisement.txt;
    for n= 1:212;
    V = [croisement(1:n-1,:);croisement(n+1:212,:)];
    %Construction des vecteurs x et y
    x = V(:,3:4);
    y = V(:,1:2);
    %Recalage des valeurs entre 0 et 1
    [x Mx mx] = scale(x);
    [y My my] = scale(y);
    %Construction de la matrice de transformation
    a = x(:,1);
    b = x(:,2);
    one = ones(length(a),1);
    T = [a b one];
    % obtention de la matrice des coefficents  (coeff = (M*T)\(M*xx))
    P = (T'*T)\(T'*y);
    yp=[croisement(n,3:4) 1]*P;   % c'est à cet endroit qu'il faut que j'indique que T  prenne seulement la ligne qui n'ait pas servi à générer le modèle
    y = descale(y,My,my);
    rmse = sqrt(mean(sum((yp-y).^2,2)));
    M(n)=rmse;
    end
    ??? Error using ==> minus
    Matrix dimensions must agree.

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    C'est normal que ça ne marche pas, il faut que tu sélectionne uniquement le y de la ligne n...
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    Non ca ne fonctionne pas, je n'obtiens qu'une seule ligne pour yp, je devrais en obtenir 212....

Discussions similaires

  1. [hard] sous-matrice nulle
    Par Nemerle dans le forum Langages fonctionnels
    Réponses: 9
    Dernier message: 07/03/2008, 07h58
  2. Calcul de transposées de sous-matrices
    Par hanane78 dans le forum MATLAB
    Réponses: 1
    Dernier message: 10/05/2007, 21h37
  3. Division d'une matrice en sous matrices
    Par hanane78 dans le forum MATLAB
    Réponses: 4
    Dernier message: 02/05/2007, 18h15
  4. Liste des sous-matrices carrées
    Par potimarara dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 12/10/2006, 18h30
  5. Sous matrice carrée d'une matrice carrée
    Par devils55 dans le forum C++
    Réponses: 2
    Dernier message: 13/11/2005, 19h07

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