Вы, похоже, используете алгоритм e1071::naiveBayes
, который ожидает аргумент newdata
для прогнозирования, следовательно, две ошибки, возникающие при запуске вашего кода. (Вы можете проверить исходный код функции predict.naiveBayes
в CRAN; вторая строка в коде ожидает newdata
, как newdata <- as.data.frame(newdata)
.) Также, как отмечает @Vincent, вам лучше конвертировать ваши переменные к фактору перед вызовом алгоритма NB, хотя это, конечно, не имеет ничего общего с вышеуказанными ошибками.
При использовании NaiveBayes
из пакета klar такой проблемы не возникнет. Например,
data(spam, package="ElemStatLearn")
library(klaR)
# set up a training sample
train.ind <- sample(1:nrow(spam), ceiling(nrow(spam)*2/3), replace=FALSE)
# apply NB classifier
nb.res <- NaiveBayes(spam ~ ., data=spam[train.ind,])
# predict on holdout units
nb.pred <- predict(nb.res, spam[-train.ind,])
# but this also works on the training sample, i.e. without using a `newdata`
head(predict(nb.res))