错误:“数据”和“参考”应该是具有相同水平的因子。使用confusionMatrix(插入符号)

时间:2019-01-26 11:28:40

标签: r r-caret confusion-matrix

使用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()时遇到的错误是

  

错误:datareference应该是相同水平的因子。

我检查了p_classexperimental[["Class"]]是否具有相同数量的objetc(83)。

知道发生了什么吗?

1 个答案:

答案 0 :(得分:2)

问题在于data,或者在这种情况下,p_class必须成为一个因素。因此,相反,我们应该使用

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