web-dev-qa-db-fra.com

R: comment faire une matrice de confusion pour un modèle prédictif?

J'ai une trame de données. la première colonne contient mon score prédictif (plage de 0 à 100, des valeurs plus petites devraient être dans la classe A, des valeurs plus élevées devraient être dans la classe B) pour mon modèle, la deuxième colonne contient la classification réelle des entrées (soit " classe A "ou" classe B ").

Comment obtenir une matrice de confusion avec R pour différentes valeurs de coupure, car je ne peux pas encore décider où je dois définir des valeurs <20 ou <50 en classe A?

Comment faire cette comparaison efficacement avec R?

15
user2718

Il y a plusieurs façons de le faire, un exemple reproductible avec vos données aurait été souhaitable:

set.seed(12345)
test <- data.frame(pred=c(runif(50,0,75),runif(50,25,100)), group=c(rep("A",50), rep("B",50)) )
table(test$pred<50,test$group)

donne

         A  B
  FALSE 18 34
  TRUE  32 16

Cela signifie donc que 32 A étaient inférieurs à 50 et 34 B étaient supérieurs à 50, tandis que 18 A étaient supérieurs à 50 (mal classés) et 16 B étaient inférieurs à 50 (mal classés)

set.seed(12345)
test <- data.frame(pred=c(runif(50,0,60),runif(50,40,100)), group=c(rep("A",50), rep("B",50)) )
table(test$pred<50,test$group)

donne

         A  B
  FALSE  8 40
  TRUE  42 10

Dans cet exemple, cause de l'échantillonnage choisi, votre classement est bien meilleur.

Le '50' peut alors être changé en tout ce que vous voulez, 20, 30, etc.

table(test$pred<50,test$group)
20
nzcoops