更新:我正在使用e1071包for naiveBayes
我是R的新手并试图围绕玩具数据建立Naive Bayes模型。然后我试着在那个模型上叫“predcit”。我看到的问题是:“predict()”的结果长度为零。请参阅简单的R repro代码。感谢您的投入!
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
答案 0 :(得分:6)
问题似乎是因变量应该是因子。我将使用可以存储多种变量类型(例如数值和因子)的数据帧(下面的df),而不是使用矩阵来存储数据。我将df存储为因子Y和数字X并运行模型...
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)
仍然有效。
答案 1 :(得分:2)
我认为问题产生于naiveBayes
假设y
是一个分类变量。
在您的示例数据中,没有(明显的)分类数据或contigency表数据。
如果我们使用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
它按预期工作。