Ошибка логистической регрессии: новые уровни в категориальном столбце в тестовых данных - PullRequest
0 голосов
/ 09 июня 2018

Поскольку я пытался предсказать, используя модель логистической регрессии в R, у меня возникает следующая ошибка:

Ошибка

Error:

pred <- предикат (модель, новые данные = тест) <br>Ошибка в model.frame.default (условия, новые данные, na.action = na.action, xlev = объект $ xlevels): у фактора admission_type_id есть новые уровни8

Насколько я понимаю, данные тестирования столбца "admission_type_id" имеют новые уровни по сравнению с данными обучения.Я попытался посмотреть на уникальные значения, и я вижу, что данные Train имеют все значения тестовых данных.

unique (train $ admission_type_id)
1 1 3 2 65 8 4
Уровни: 1 2 3 4 5 6 7 8

уникальные (test $ admission_type_id)
1 6 1 2 3 5 8
Уровни: 12 3 4 5 6 7 8

Было бы очень полезно, если бы кто-нибудь мог помочь мне понять проблему.Спасибо.

1 Ответ

0 голосов
/ 09 июня 2018

Проблема в том, что у вас разные уровни факторов для одного / многих предикторов:

Например, я использую данные 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)

Я предлагаю, возьмите образец поезда, который является очень хорошим представлением всего набора данных, и ваш поезд и тест должны соответствовать, если есть несоответствие уровней факторов, эта ошибка всегда будет.

...