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,第五列是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 回答