Package R caret confusionMatrix avec les catégories manquantes
Je suis l'aide de la fonction confusionMatrix
dans le R paquet caret
pour calculer des statistiques pour certaines données que j'ai. J'ai été mettre mes prédictions ainsi que mes valeurs réelles dans le table
fonction pour obtenir la table à utiliser dans le confusionMatrix
fonction de la manière suivante:
table(predicted,actual)
Cependant, il ya plusieurs résultats possibles (par exemple A, B, C, D), et mes prédictions ne représentent pas toujours toutes les possibilités (par exemple A, B, D). La sortie de la table
fonction n'incluent pas le manque de résultats et ressemble à ceci:
A B C D
A n1 n2 n2 n4
B n5 n6 n7 n8
D n9 n10 n11 n12
# Note how there is no corresponding row for `C`.
La confusionMatrix
fonction ne peut pas gérer le manque de résultats et donne l'erreur:
Error in !all.equal(nrow(data), ncol(data)) : invalid argument type
Est-il une manière que je peux utiliser le table
fonctionnent différemment pour obtenir les lignes manquantes avec des zéros ou de l'utilisation de la confusionMatrix
fonctionnent différemment de sorte qu'il sera de vue manquant résultats de zéro?
Comme une remarque: Depuis que je suis à sélectionner au hasard de mes données pour les tests, il y a des fois qu'une catégorie est également non représentée dans le résultat réel plutôt que de simplement le prédit. Je ne crois pas que cela va changer la solution.
OriginalL'auteur Barker | 2013-11-09
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
union
pour assurer des niveaux similaires:OriginalL'auteur Borealis
Première remarque que
confusionMatrix
peut être appelé commeconfusionMatrix(predicted, actual)
en plus d'être appelée avectable
objets. Cependant, la fonction renvoie une erreur sipredicted
etactual
(à la fois considéré commefactor
s) n'ont pas le même nombre de niveaux.Cela (et le fait que le
caret
paquet de cracher une erreur sur moi car ils ne sont pas les dépendances droit en premier lieu) est pourquoi je vous suggère de créer votre propre fonction:qui vous donnera:
table
savoir que d'autres niveaux de facteurs sont possibles? La plupart des fonctions danscaret
beaucoup de mal à assurer les prédictions ont toujours les mêmes niveaux que dans les classes d'origine - Maxtable
pourrais dire de l'union du réel et les niveaux prévus. Je peux toutefois accepter (ce que je pourrais faire d'autre de toute façon :-)) quetable
fonctionne de cette façon, j'ai juste pensé que je devrais mentionner le fait que, pour ce problème particulier, il ne fonctionnera pas tant que l'OP veut.Merci beaucoup, cela a été d'une grande aide!. J'ai ajouté un peu de code pour créer la matrice si " loi " n'a pas toutes les valeurs possibles représentés ainsi que pour être en mesure d'étiqueter les lignes et les colonnes et cela a fonctionné parfaitement. Également comme une note pour les autres, vous avez besoin d'utiliser " que.table de fonction pour le faire fonctionner dans le "confusionMatrix" la fonction.
Simple et bon! Je voudrais Modifier ce deux lignes dans la fonction:
numClasses <- length(unique(c(act,pred)))
sapply(split(as.factor(pred), as.factor(act)), tabulate, nbins=numClasses)
OriginalL'auteur fotNelton
J'ai eu le même problème et voici ma solution:
Cheers
Cankut
OriginalL'auteur Cankut çubuk