2014-10-24 5 views
2

Я пытаюсь запустить функцию предсказания, которую я получил после обучения моей модели и после перекрестной проверки. Я предсказываю переменную «classe».Ошибка с новыми данными с таким же числом предикторов, но с различным числом строк при использовании. (

Данные испытаний имеют то же имя число предикторов, что и данные обучения, за исключением того, что в нем меньше строк (20 наблюдений). Все предсказатели в тестовых данных являются числовыми (точно так же, как данные обучения). Но похоже, что это вызывает проблемы независимо от того, какие модели я использовал.

Модель:

rf <- train(train$classe ~., method="rf", data=train, 
     trControl = trainControl(method = "oob")) 

Я пробовал:

predict(rf, testing1) 

Я получил

Error in predict.randomForest(modelFit, newdata) : newdata has 0 rows 

я попытался

gbm <- train(train$classe ~., method="gbm", data=train, 
     trControl = trainControl(method = "cv", number=5)) 

predict(gbm, testing1) 

я получил

Error in aperm.default(psum, c(2, 1, 3)) : 
'perm' is of wrong length 3 (!= 2) 

Мой тест данных выглядит следующим образом, единственным отличием является последней переменной указывает на «проблемный идентификатор», в то время как в обучении устанавливается последняя переменная указывает «Classe»:

> str(testing1) 
'data.frame': 20 obs. of 86 variables: 
$ roll_belt    : num 123 1.02 0.87 125 1.35 -5.92 1.2 0.43 0.93 114 ... 
$ pitch_belt    : num 27 4.87 1.82 -41.6 3.33 1.59 4.44 4.15 6.72 22.4 ... 
$ total_accel_belt  : num 20 4 5 17 3 4 4 4 4 18 ... 
$ kurtosis_roll_belt  : num NA NA NA NA NA NA NA NA NA NA ... 
$ kurtosis_picth_belt : num NA NA NA NA NA NA NA NA NA NA ... 

... # all numeric variables 

$ magnet_forearm_y  : num 419 791 698 783 -787 800 284 -619 652 723 ... 
$ magnet_forearm_z  : num 617 873 783 521 91 884 585 -32 469 512 ... 
$ problem_id    : num 1 2 3 4 5 6 7 8 9 10 ... 

Любая помощь приветствуется!

ответ

0

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

2

Я решил проблему: некоторые из значений в столбцах тестовых данных являются «NA», а в данных обучения они пусты. Были некоторые несоответствия между тем, как оба файла считываются в R. После исправления этой проблемы, pred() работает сейчас.