当我试图使用R中的Logistic回归模型进行预测时,我遇到以下错误:
错误
pred< - predict(model,newdata = test)
model.frame.default中的错误(Terms,newdata,na.action = na.action,xlev = object $ xlevels): factor admission_type_id有新的等级8
根据我的理解,该列的测试数据" admission_type_id"比较训练数据有新的水平。 我尝试查看唯一值,我看到Train数据具有测试数据的所有值。
独特(火车$ admission_type_id)
1 1 3 2 6 5 8 4
级别:1 2 3 4 5 6 7 8独特(测试$ admission_type_id)
1 6 1 2 3 5 8
级别:1 2 3 4 5 6 7 8
如果有人可以帮助我理解这个问题,那将会很有帮助。 谢谢。
答案 0 :(得分:0)
问题在于您为一个/多个预测变量设定了不同的因子水平:
例如,我使用的是mtcars数据。它也应该出现在你的会话中。(阅读我在代码之间的评论)
mtcars_train <- mtcars[mtcars$cyl %in% c(4,6),] #Consider this as train data
mtcars_train$cyl <- as.factor(mtcars_train$cyl) #Changing cyl to factor, here cyl values are 4 and 6 only, notice there is no 8
mtcars_orig <- mtcars #Taking the entire data which contain cyl values as 4,6 and 8
mtcars_orig$cyl <- as.factor(mtcars_orig$cyl) #Converting to factors, here again we can see that levels(mtcars_orign$cyl) is 4,6 and 8
lm1 <- lm(am ~ mpg + cyl + hp , data=mtcars_train) # Building the model
predict(lm1, newdata=mtcars_orig) #Now if you try to predict you will receive the error of having missing classes
lm1$xlevels[["cyl"]] <- union(lm1$xlevels[["cyl"]], levels(mtcars_orig$cyl)) #You can fix this here by running this code, it will append the levels to your original lm1 model here
如果运行预测,在运行最后一步后,您将获得结果。
predict(lm1, newdata=mtcars_orig)
我的建议是,乘坐一个火车样本,这是一个非常好的代表你的整个数据集,你的火车和测试应该匹配,如果因素水平不匹配,这个错误总会来。