Ошибка: `data` и` reference` должны быть факторами с одинаковыми уровнями. Использование confusionMatrix (карета) - PullRequest
0 голосов
/ 26 января 2019

Я получаю сообщение об ошибке при использовании функции confusionMatrix() из пакета caret.Для воспроизведения примера я использую набор данных Sonar из пакета mlbench.

library(mlbench)
data(Sonar)

rows <- sample(nrow(Sonar))
Sonar <- Sonar[rows, ]


split <- round(nrow(Sonar) * 0.6)
adiestramiento <- Sonar[1:split, ]
experimental <- Sonar[(split + 1):nrow(Sonar), ]

model <- glm(Class ~ ., family = binomial(link = "logit"), adiestramiento)
p <- predict(model, experimental, type = "response")
p_class <- ifelse(p > 0.5, "M", "R")

library(caret)
confusionMatrix(p_class, experimental[["Class"]])

Ошибка, которую я получаю при запуске confusionMatrix(), равна

Ошибка:data и reference должны быть факторами с одинаковыми уровнями`

Я проверил, что и p_class, и experimental[["Class"]] имеют одинаковое количество объектов (83).

Есть идеи, что происходит?

1 Ответ

0 голосов
/ 26 января 2019

Проблема в том, что data или, в этом случае, p_class должно быть фактором.Таким образом, вместо этого мы должны использовать

confusionMatrix(factor(p_class), experimental[["Class"]])
# Confusion Matrix and Statistics
# 
#           Reference
# Prediction  M  R
#          M 17 20
#          R 33 13
# ...
...