Наивный байес в R - PullRequest
       5

Наивный байес в R

4 голосов
/ 06 февраля 2012

Я получаю сообщение об ошибке при запуске наивного байесовского классификатора в R. Я использую следующий код:

mod1 <- naiveBayes(factor(X20) ~ factor(X1) + factor(X2) +factor(X3) +factor(X4)+factor(X5)+factor(X6)+factor(X7)
               +factor(X8)+factor(X9)
               +factor(X10)+factor(X11)+ factor(X12)+factor(X13)+factor(X14)
               +factor(X15)
               +factor(X16)+factor(X17)
               +factor(X18)+factor(X19),data=intent.test)

res1 <- predict(mod1)$posterior

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

**Error in as.data.frame(newdata) : 
argument "newdata" is missing, with no default**

Я попытался запустить что-то вроде

res1 <- predict(mod1,new_data=intent.test)$posterior

, но это также дает ту же ошибку.

1 Ответ

9 голосов
/ 06 февраля 2012

Вы, похоже, используете алгоритм 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...