(Se admiten sugerencias de etiquetas, sólo se me ocurre la etiqueta r y la etiqueta de modelos predictivos)
He aquí una variable de mis datos:
> table(processed_train$cat89)
A B C D E F G H I
183744 4312 220 33 5 0 1 1 2
He dividido mis datos en prueba y entrenamiento, he creado un modelo y he intentado hacer alguna predicción en la prueba:
set.seed(123)
sample_train <- sample(nrow(processed_train),
floor(nrow(processed_train) * 0.8))
working_train <- processed_train[sample_train,]
working_test <- processed_train[-sample_train,]
# kitchen sink first model - all features
predictors <- names(subset(working_train, select = -c(id,target)))
model_mlr_sink <- lm(paste("loss ~ ",paste(predictors, collapse="+"),sep=""), data=working_train)
Antes de predecir, he aquí el aspecto de una variable:
> table(working_test$cat89)
A B C D E F G H I
73536 1697 78 12 3 0 1 0 1
> table(processed_train$cat89)
A B C D E F G H I
183744 4312 220 33 5 0 1 1 2
Ahora mira lo que pasa:
> prediction_mlr_sink <- predict(model_mlr_sink, interval="prediction", newdata=working_test)
Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) :
factor cat89 has new levels G
Buscando en Google, parece que la opinión generalizada es abandonar la variable cat89. Pero eso me parece burdo. ¿Hay alguna solución más elegante? ¿Qué debería hacer aquí para obtener mis predicciones en los datos de prueba y evitar este error?