这听起来不对。如果
我已经在2120x10的样本大小上训练了一个模型。现在,我正试图将相同的模型应用于测试数据集,但在导出混淆矩阵时遇到了问题。
test_predictions <- predict(train_obj, test_data)
test_predictions <- ifelse(test_predictions > 5, 1, 0)
confusionMatrix(as.factor(test_predictions), test_data$outcome, positive="1")
我在计算混淆矩阵时遇到了一个错误,因为test_data$outcome
有2135个值。如果我使用test_data$outcome[1:2120]
,一切都很好。
有没有更好的方法可以在不限制值数量的情况下计算混淆矩阵。?限制test_data$outcome
中的值的数量是否正确?
test_data
只有2120行,那么test_data$outcome
怎么能有2135个值?即使test_data的预测器中存在NA,它们也会被预测为NA,然后被confusionMatrix
忽略。
dat=data.frame(a=rnorm(1000), b=rnorm(1000))
dat=dat %>%
mutate(c=5*(a+b)) %>%
mutate(d=ifelse(c>5, 1, 0))
set.seed(1)
i=sample(1:1000, 750, replace=FALSE)
train_data=dat[i,]
test_data=dat[-i,]
test_data[sample(1:250, 3),1:2]=NA
lr=lm(c ~ a + b, data=train_data)
test_predictions=predict(lr, test_data)
test_predictions=ifelse(test_predictions>5, 1, 0)
confusionMatrix(test_predictions, test_data$d)
Reference
Prediction 0 1
0 187 0
1 0 60