2014-02-04 4 views
1

Документация (если я читаю ее правильно) говорит, что функция предсказания случайного леса дает предсказания NA, если она встречает предсказатели NA для некоторых наблюдений.R - Случайный прогноз леса не выполняется с NA в предикторах

Примечание: Если объект наследует от randomForest.formula, то любые данные с НС молча исключены из предсказания. Возвращаемое значение будет содержать NA, соответственно, в агрегированных и отдельных деревьев предсказания (если требуется), но не в непосредственной близости или узловых матриц

Однако при попытке использовать функцию предсказать на наборе данных с некоторыми NA в предикторах [NA в 7 наблюдениях из 2688]. Я сталкиваюсь со следующим условием ошибки, и предсказание терпит неудачу.

Ошибка в predict.randomForest (модель, new.ds): пропущенные значения в NewData

Существует немного грязной работы вокруг, что я хотел бы избежать, если это возможно.

Я делаю/читаю что-то неправильно? Нужно ли что-то делать с предложением "inherits from randomForest.formula"?

ответ

0

Используя некоторые примеры из документации:

set.seed(1) 
x <- data.frame(x1=gl(32, 5), x2=runif(160), y=rnorm(160)) 
rf1 <- randomForest(x[-3], x[[3]], ntree=10) 
> inherits(rf1,"randomForest.formula") 
[1] FALSE 

> iris.rf <- randomForest(Species ~ ., data=iris, importance=TRUE, 
         proximity=TRUE) 
> inherits(iris.rf,"randomForest.formula") 
[1] TRUE 

Таким образом, вы, вероятно, называется randomForest без использования формулы интерфейса, чтобы соответствовать модели.

+0

Спасибо! Любые идеи, почему это будет так? В документации говорится, что использование формулы в обучении может быть медленнее в больших наборах данных, поэтому я не использую формулу (плюс у меня уже есть подготовленные модели, я не хочу переучиваться). Любые другие работы? – user997943

+0

@ user997943 Я не знаю почему. Это может быть просто надзор, или может быть причина. Тем не менее, я не могу думать о причине. Это было бы довольно простое изменение, поэтому, возможно, стоит написать письмо со стороны сопровождающего. По крайней мере, они знали бы «почему», если на самом деле есть причина. – joran

+0

@ user997943 Всегда можно просто называть 'na.omit' свои данные сами, передавая его« предсказывать ». – joran