2015-07-29 1 views
0

Я использую модель rf в R для прогнозирования двоичного результата 0 или 1. У меня есть категориальные переменные (закодированные как числа) в моих входных данных, которые кодируются как фактор во время обучения , Я использую функцию factor() в R, чтобы преобразовать переменную в качестве коэффициента. Поэтому для каждой категориальной переменной x мой код выглядит следующим образом.случайный лес: ошибка при работе с уровнями факторов в R

feature_x1=factor(feature_x1) # Convert the variable into factor in training data. 
#This variable takes 3 levels 0,1,2 

Это прекрасно работает при обучении модели. Предположим, что мой объект модели - rf_model. При запуске модели на новые данные, которые являются всего лишь вектором чисел. Я сначала преобразовать число в факторы feature_x1

newdata=data.frame(1,2) 
colnames(newdata)=c("feature_x1","feature_x2") 
newdata$feature_x1=factor(newdata$feature_x1) 
score=pred(rf_model,newdata,type="prob") 

Я получаю следующую ошибку

Ошибка в predict.randomForest (rf_model, NewData, тип = "Prob"): Новые уровни факторов не присутствуют в данных обучения

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

Пожалуйста, дайте мне знать, если больше ясности или код необходим

ответ

2

Попробуйте

newdata$feature_x1 <- factor(newdata$feature_x1, levels=levels(feature_x1)) 
+0

Уже пробовал. Не работает –

+0

Всегда лучше говорить, что вы пробовали в вопросе, особенно если ваш пример не является самодостаточным. Я уверен, что больше ответов появится, когда вы сделаете свой пример работоспособным. –

+0

Спасибо, что сейчас работает. Причина, по которой он не работал ранее, состоял в том, что я использовал as.data.frame() в своем коде вместо data.frame() –

 Смежные вопросы

  • Нет связанных вопросов^_^