R Предсказание случайного леса не работает

Я новичок в Случайных лесах в R, и я пытаюсь сделать прогноз. Я построил модель случайного леса, используя следующий код, который отлично работает

library(randomForest)
RF_model = randomForest(trainrows[,col_truth]~.
                    ,data = trainrows[,cols_to_use]
                    ,ntree=100
                    ,do.trace=T)

Если я распечатаю RF_model, я получу следующий результат

Call:
 randomForest(formula = trainrows[, col_truth] ~ ., data = trainrows[,      cols_to_use], ntree = 100, do.trace = T) 
               Type of random forest: classification
                     Number of trees: 100
No. of variables tried at each split: 4

        OOB estimate of  error rate: 19.23%
Confusion matrix:
     0    1 class.error
0 7116 1640   0.1873001
1 1725 7015   0.1973684

Затем, когда я пытаюсь сделать прогноз с помощью модели, я получаю следующую ошибку

> predict(RF_model)
Error in 1:dim(data)[1] : argument of length 0

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

РЕДАКТИРОВАТЬ

Чтобы предоставить больше данных, я попытался использовать случайные леса с набором данных iris.

rf = randomForest(iris[,1]~., data=iris[,c(1, 2)], ntree=100)
predict(rf)
Error in 1:dim(data)[1] : argument of length 0

Думаю, это связано не с моими данными, а с моей версией R. Любые идеи?


person Jon    schedule 26.06.2014    source источник
comment
Включите образцы данных, чтобы ваш пример был воспроизводимым. Не стесняйтесь использовать встроенный набор данных, но, если мы не сможем запустить тот же код и получить ту же ошибку, трудно помочь.   -  person MrFlick    schedule 27.06.2014
comment
rf = randomForest(iris[,1]~., data=iris[,c(1, 2)], ntree=100) ; predict(rf) работает нормально, поэтому эта проблема, вероятно, специфична для вашего набора данных. Пожалуйста, включите воспроизводимый пример.   -  person josliber♦    schedule 27.06.2014
comment
Если мне приходилось догадываться, проблема, скорее всего, связана с вашей спецификацией формулы, которая не соответствует ни одному из соглашений об указании формул в R. Формулы содержат имена столбцов. НЕ смешивайте подстановки в своих формулах. Всегда.   -  person joran    schedule 27.06.2014
comment
Я только что изменил свой вопрос, показывая больше данных   -  person Jon    schedule 27.06.2014


Ответы (1)


Когда вы используете функцию прогнозирования, вы пытаетесь предсказать результат или метки для своего набора тестов.

rf_predict <- predict(RF_model, test_set)

Вы можете создать матрицу путаницы, чтобы сравнить точность вашего случайного леса, используя табличную функцию

table(observed, rf_predict)

Примечание: наблюдаемые метки будут правильными для тестового набора.

person Barb    schedule 02.12.2014