2016-06-04 8 views
-2

У меня есть учебные набор данных ниже переменныхerror(): что я могу сделать, если одна переменная существует в данных обучения, но не в данных прогнозирования?

str(PairsTrain) 

'data.frame': 1495698 obs. of 4 variables: 
      $ itemID_1  : int 1 4 8 12 15 19 20 20 22 26 ... 
      $ itemID_2  : int 4112648 1223296 2161930 5637025 113701   
      $ isDuplicate  : int 1 0 1 0 0 0 0 0 1 0 ... 
      $ generationMethod: int 1 1 1 1 1 1 1 1 1 1 ... 

я узнал из этого набора данных с помощью логистической регрессии glm() функции

mod1 <- glm(isDuplicate ~., data = PairsTrain, family = binomial) 

Ниже представлена ​​структура моего тестового набора данных:

str(Test) 

'data.frame': 1044196 obs. of 3 variables: 
     $ id  : int 0 1 2 3 4 5 6 7 8 9 ... 
     $ itemID_1: int 5 5 6 11 23 23 30 31 36 47 ... 
     $ itemID_2: int 4670875 787210 1705280 3020777 5316130 3394969 2922567 

Я пытаюсь сделать прогнозы по моим данным тестовых данных, как показано ниже

PredTest <- predict(mod1, newdata = Test, type = "response") 

Error in eval(expr, envir, enclos) : object 'generationMethod' not found

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

Я не уверен, что я прав, и я застрял здесь и не знаю, как справиться с этой ситуацией.

+0

Hi Zheyuan У меня нет метода генерации в тестовом наборе данных. «id», «itemID_1», «itemID_2» являются единственными функциями в наборе тестовых данных. –

ответ

1

ОК, это все, что вам нужно:

test$generationMethod <- 0 

Вы должны иметь переменную generationMethod в вашем test! Он используется для построения моделей, поэтому требуется, чтобы вы делали прогноз predict. Как вы сказали, у вас нет этой переменной в test, используйте приведенное выше, чтобы создать такую ​​переменную в test. Это не повлияет на создание prediciton, так как этот столбец равен 0; но, это поможет вам пройти проверку переменной на predict.

В качестве альтернативы вы можете рассмотреть возможность удаления переменной generationMethod из вашей модели. Попытка:

mod2 <- glm(isDuplicate ~ itemID_1 + itemID_2, data = PairsTrain, 
      family = binomial) 
+0

Спасибо Zheyun, я попытаюсь обновить здесь –

+0

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