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

R Discussion :

Calcule de la matrice de confusion


Sujet :

R

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Par défaut Calcule de la matrice de confusion
    Bonjour,

    Je travail actuellement sur un problème de classification et j'ai un tableau à deux colonnes avec les résultats. Dans le tableau, la première colonne contient les valeurs à prédire, la deuxième colonne contient les prédictions et chaque ligne du tableau représente une observation.

    Voici un simple petit exemple créé artificiellement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    > result <- cbind(Y=c(1,1,-1,-1,1,-1,1),Yhat=c(1,1,1,-1,1,-1,-1))
    > result
          Y Yhat
    [1,]  1    1
    [2,]  1    1
    [3,] -1    1
    [4,] -1   -1
    [5,]  1    1
    [6,] -1   -1
    [7,]  1   -1
    Afin de calculer la precision, le recall et le F-score de mon modèle, je voudrais calculer les nombres de TP, FP, FN et TN de la matrice de confusion. J'ai déjà fais le code suivant :

    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
     
    result <- cbind(Y=c(1,1,-1,-1,1,-1,1),Yhat=c(1,1,1,-1,1,-1,-1))
    TP <- 0
    FP <- 0
    FN <- 0
    TN <- 0
    for(i in 1:NROW(result)){
    	if(result[i,1] == result[i,2]){
    		if(result[i,2] == 1)
    			TP <- TP + 1					
    		else			
    			TN <- TN + 1	
    	}
    	else{
    		if(result[i,2] == 1)
    			FP <- FP + 1					
    		else			
    			FN <- FN + 1	
    	}
    }
    precision <- TP/(TP+FP)
    recall <- TP/(TP+FN)
    F <- 2 * (precision * recall)/(precision + recall + 0.00000000000000000000000000001)
    Problème: dans mon ensemble de test, j'ai plus d'un million d'observations ... et mon code prend trop de temps.
    Je n'arrive pas à vectoriser ce code.
    Pourriez vous svp m'aider? Avez-vous une idées pour optimiser ce code? ou même plus simple... Existe-il déjà des fonctions en R qui réalisent ce type de calcule?

    Merci !

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Par défaut
    Bonjour,

    Voilà, J'ai trouvé une réponse. Pour obtenir la matrice de confusion, dans mon cas on peux utiliser "table()".
    Le code suivant donne le même résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    result <- cbind(Y=c(1,1,-1,-1,1,-1,1),Yhat=c(1,1,1,-1,1,-1,-1))
     
    confMat <- table(result[,2],result[,1])
    TP <- confMat["1","1"]
    FP <- confMat["1","-1"]
    FN <- confMat["-1","1"]
    TN <- confMat["-1","-1"]
    precision <- TP/(TP+FP)
    recall <- TP/(TP+FN)
    F <- 2 * (precision * recall)/(precision + recall + 0.00000000000000000000000000001)
    Ce code est bien plus rapide.

    A++

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

Discussions similaires

  1. Calcul sur des matrices
    Par Ptinéwik dans le forum MATLAB
    Réponses: 2
    Dernier message: 21/01/2008, 10h37
  2. Calcul d'une matrice dans une boucle for
    Par david_Montreal dans le forum MATLAB
    Réponses: 7
    Dernier message: 11/07/2007, 17h17
  3. [Maths] Calcul de la matrice de projection
    Par HanLee dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 03/07/2007, 01h52
  4. [Débutant] Création d'une matrice de confusion
    Par Alucard9800XT dans le forum MATLAB
    Réponses: 4
    Dernier message: 15/05/2007, 09h19
  5. Calcul de la matrice Hessienne
    Par pseudocode dans le forum Traitement d'images
    Réponses: 15
    Dernier message: 02/05/2007, 18h18

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