Erreur dans la matrice de confusion: les données et les facteurs de référence doivent avoir le même nombre de niveaux
J'ai formé un modèle de Régression Linéaire avec R caret. Je vais maintenant essayer de générer une matrice de confusion et reçois l'erreur suivante:
Erreur dans confusionMatrix.par défaut(pred, test$Final) :
les données de référence et de facteurs doivent avoir le même nombre de niveaux
EnglishMarks <- read.csv("E:/Subject Wise Data/EnglishMarks.csv",
header=TRUE)
inTrain<-createDataPartition(y=EnglishMarks$Final,p=0.7,list=FALSE)
training<-EnglishMarks[inTrain,]
testing<-EnglishMarks[-inTrain,]
predictionsTree <- predict(treeFit, testdata)
confusionMatrix(predictionsTree, testdata$catgeory)
modFit<-train(Final~UT1+UT2+HalfYearly+UT3+UT4,method="lm",data=training)
pred<-format(round(predict(modFit,testing)))
confusionMatrix(pred,testing$Final)
L'erreur se produit lors de la génération de la matrice de confusion. Les niveaux sont les mêmes sur les deux objets. Je ne peux pas comprendre quel est le problème. Leur structure et les niveaux sont donnés ci-dessous. Ils doivent être la même. Toute aide serait grandement apprécié que sa me faire craqué!!
> str(pred)
chr [1:148] "85" "84" "87" "65" "88" "84" "82" "84" "65" "78" "78" "88" "85"
"86" "77" ...
> str(testing$Final)
int [1:148] 88 85 86 70 85 85 79 85 62 77 ...
> levels(pred)
NULL
> levels(testing$Final)
NULL
source d'informationauteur abcd | 2015-05-02
Vous devez vous connecter pour publier un commentaire.
Ne
table(pred)
ettable(testing$Final)
. Vous verrez que il y a au moins un chiffre dans le jeu de test qui ne sont jamais prévues (c'est à dire de ne jamais présent danspred
). C'est ce que signifie pourquoi "différent nombre de niveaux". Il est un exemple de mesure à la fonction pour contourner ce problème,ici.Cependant, j'ai trouvé que cette astuce fonctionne très bien:
table(factor(pred, levels=min(test):max(test)), factor(test, levels=min(test):max(test)))
Il devrait vous donner exactement la même matrice de confusion comme avec la fonction.
quelque chose comme ce qui suit semble fonctionner pour moi. L'idée est similaire à celle de @nayriz:
confusionMatrix(
factor(pred, levels=1:148),
factor(testing$Final, levels=1:148)
)
La clé est de s'assurer que les niveaux de facteur de match.