3

更新: naiveBayes に e1071 パッケージを使用しています

私はRが初めてで、おもちゃのデータを中心に単純ベイズモデルを構築しようとしています。次に、そのモデルで「predcit」を呼び出そうとしました。私が見た問題は、「predict()」の結果の長さがゼロです。簡単な R 再現コードを参照してください。ご意見をお寄せいただきありがとうございます。

 df<-NULL

 df <- rbind(df, c(0,3))

 df <- rbind(df, c(1,1))

 df <- rbind(df, c(1,3))

 model <- naiveBayes(df[,2], df[,1])

 prediction <- predict(model, df[,-1])

 length(prediction)

 ## [1] 0
4

2 に答える 2

5

問題は、従属変数が因子であると予想されることにあるようです。行列を使用してデータを格納する代わりに、複数の変数タイプ (数値や係数など) を格納できるデータ フレーム (以下の df) を使用します。係数 Y と数値 X を df に格納し、モデルを実行します...

df<-data.frame(Y=factor(c(0,1,1)),X=c(3,1,3))
model<-naiveBayes(Y~X,df)
predict(model,df)

または、それが問題を解決した要因であることを示すために (つまり、式の使用ではありません)...

model<-naiveBayes(df[,2],df[,1])
predict(model,df)

まだ動作します。

于 2013-03-14T04:22:42.837 に答える
2

この問題は、それがカテゴリ変数であるとnaiveBayes仮定しているという事実から生じていると思います。y

サンプルデータには、(明らかな)カテゴリデータまたは分割表データはありません。

ヘルプから例をとると、を使用してiris、5番目の列はSpecies因子変数であり、因子変数です。

library(e1071)
data(iris)
m <- naiveBayes(iris[,-5], iris[,5])
m
table(predict(m, iris), iris[,5])


            setosa versicolor virginica
  setosa         50          0         0
  versicolor      0         47         3
  virginica       0          3        47

期待どおりに動作します。

于 2013-03-14T04:19:12.513 に答える