R中的朴素贝叶斯无法预测-因子(0)水平:

R中的朴素贝叶斯无法预测-因子(0)水平:,r,machine-learning,bayesian,R,Machine Learning,Bayesian,我的数据集如下所示: data.flu <- data.frame(chills = c(1,1,1,0,0,0,0,1), runnyNose = c(0,1,0,1,0,1,1,1), headache = c("M", "N", "S", "M", "N", "S", "S", "M"), fever = c(1,0,1,1,0,1,0,1), flu = c(0,1,1,1,0,1,0,1) ) > data.flu chills runnyNose headache

我的数据集如下所示:

data.flu <- data.frame(chills = c(1,1,1,0,0,0,0,1), runnyNose = c(0,1,0,1,0,1,1,1), headache = c("M", "N", "S", "M", "N", "S", "S", "M"), fever = c(1,0,1,1,0,1,0,1), flu = c(0,1,1,1,0,1,0,1) )
> data.flu
   chills runnyNose headache fever flu
1      1         0        M     1   0
2      1         1        N     0   1
3      1         0        S     1   1
4      0         1        M     1   1
5      0         0        N     0   0
6      0         1        S     1   1
7      0         1        S     0   0
8      1         1        M     1   1

> str(data.flu)
'data.frame':   8 obs. of  5 variables:
 $ chills   : num  1 1 1 0 0 0 0 1
 $ runnyNose: num  0 1 0 1 0 1 1 1
 $ headache : Factor w/ 3 levels "M","N","S": 1 2 3 1 2 3 3 1
 $ fever    : num  1 0 1 1 0 1 0 1
 $ flu      : num  0 1 1 1 0 1 0 1
我试着按照naiveBayes中帮助手册中的示例进行操作,它对我很有用。我不确定我的方法有什么问题。非常感谢


我认为数据类型可能有问题,在应用naivebayes模型之前,我尝试使用
as.factor
将所有变量更改为factor,这似乎对我有用。但我仍然非常困惑幕后的“如何”和“为什么”是什么。

问题不在于
predict()
函数,而在于模型定义

naiveBayes()的帮助文件显示:

Computes the conditional a-posterior probabilities of a categorical class variable 
given independent predictor variables using the Bayes rule.
所以y值应该是分类的,但在你的例子中它们是数字

解决方法是将
flu
转换为因子

model <- naiveBayes(as.factor(flu)~., data=data.flu)
predict(model, patient)
[1] 1
Levels: 0 1

model嗯,非常感谢您的回答。我现在正在学习naiveBayes,模型与我的手工计算一致。我想知道
predict
determinate y==1实际上如何具有更好的成本函数?成本函数在哪里?我如何在R中找到y=0和y=1的成本函数值?抱歉,我无法回答这个问题,因为我太熟悉naiveBayes了
model <- naiveBayes(as.factor(flu)~., data=data.flu)
predict(model, patient)
[1] 1
Levels: 0 1