Comment dois-je mettre en œuvre une matrice de confusion dans Matlab?
Je sais ce qu'est une matrice de confusion.
Donné N classes, nous avons une matrice NxN M où
- chaque ligne est l'une des catégories
- chaque colonne est l'une des classes
M(X,Y) = nombre d'éléments qui ont été classés dans la classe X et devrait avoir classés dans la classe Y (bien sûr, si X=Y, la classification est correcte).
Maintenant, j'ai un ensemble de "classes de composés" et un variable nombre de classes
-
avec un "COMPOSÉ", je veux dire qu'une classe correspond à un vecteur (de variable longueur).
Par exemple, si la classe est représentée par un 2 de l'élément de vecteur,les classes possibles seront:[0,0]
[0,1]
[1,0]
[1,1]
Mi objectif est de définir une fonction avec:
- D'ENTRÉE: une matrice NxM (où N=nombre d'éléments classés,M=nombre d'éléments de chaque classe) de classification des éléments , une matrice NxM de prévu classe pour chaque élément.
- De SORTIE: NXN confusion de la matrice correspondant à l'entrée des classes
Exemple de SORTIE:
[1 0 0]
[0 2 0]
[0 1 0]
Cette matrice est la matrice de 3x3.
Cela signifie que le nombre total de classes est de 3 et le nombre de classés éléments sont 4:
- un élément doit avoir été classé dans la catégorie 1 et a été classé dans la catégorie 1
- deux éléments ont été classés dans la classe 2, qui ont été classés dans la classe 2
- un élément doit avoir été classés dans les classes 3 et a été classé dans la catégorie 2
(il n'a pas d'importance la façon dont les éléments sont composés de.
Laissez l'image de la classe peuvent être:
[0,0,1]
[1,0,1]
[1,1,1]
** Exemple de matrice d'entrée (EXPECTEDclasses): **
[0,0,1]
[1,0,1]
[1,0,1]
[1,1,1]
** Exemple de matrice d'entrée (des classes): **
[0,0,1]
[1,0,1]
[1,0,1]
[1,0,1] <-- this is the element(line) incorrectly classified
Comment dois-je faire? (le classement est effectué par un Perceptron ou Adaline réseau de neurones)
Je vous remercie à l'avance pour tout conseil!
ajouté dès maintenant
Et quelle est l'exemple d'ENTRÉE?
ajouté dès maintenant
OriginalL'auteur dragonmnl | 2012-06-26
Vous devez vous connecter pour publier un commentaire.
La clé est d'utiliser ismember sous la forme suivante:
[Lia,Locb] = ismember(A,B,'rows')
Le deuxième argument de sortie vous indique le rang de la matrice B que chaque ligne de la matrice A correspond. Utilisez ces informations pour construire la matrice de confusion (qui est une fonction intégrée dans les statistiques de la boîte à outils).Si vous n'avez pas accès à
confusionmat
, vous pouvez utiliseraccummarray
le faire vous-même.édité avec une alternative à
confusionmat
je vous remercie encore. et si "attendu" a un autre élément que le "obtenu"? Par exemple: dans "obtenu" il est de la classe, qui ne devrait pas exister
Où pensez-vous qu'il devrait aller dans ce cas? Mon inclination serait d'ajouter un "invalide" par la classe de remplacer les zéros dans
ob
avec un nouveau "code de la classe" et d'un incrémentnum_classes
raison de l'excédent de la valeur.num_classes = num_classes+1; ob(ob==0)=num_classes;
ok,il suffit de las question: comment dois-je calculer le nombre de "non-existant/non valide" classifcations?
OriginalL'auteur tmpearce