Rのナイーブベイズ

Rでnaive bayesクラシファイアを実行しているときにエラーが発生しました。次のコードを使用しています。

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

これも同じエラーを出します。

4
正しいスペルは newdata です(エラーメッセージのように)。アンダースコアは省略可能ですが、オプションのパラメータです。あなたのデータセットには何か不都合なことがあるかもしれませんが、あなたはそれに関する情報を何も与えません。データを要素として既にエンコードしておくと、data.frameに役立つ場合があります。最後の列を他の列と一緒に予測しようとすると、モデルはよりコンパクトに X20〜として記述できます。
追加された 著者 Vincent Zoonekynd,

1 答え

You seem to be using the e1071::naiveBayes algorithm, which expects a newdata argument for prediction, hence the two errors raised when running your code. (You can check the source code of the predict.naiveBayes function on CRAN; the second line in the code is expecting a newdata, as newdata <- as.data.frame(newdata).) Also as pointed out by @Vincent, you're better off converting your variables to factor before calling the NB algorithm, although this has certainly nothing to do with the above errors.

klar パッケージの NaiveBayes を使用するそのような問題は起こりません。例えば。、

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))
9
追加された