我试图了解Naive Bayes是如何工作的。
我的数据集如下所示:
> 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 : Factor w/ 2 levels "0","1": 1 2 2 2 1 2 1 2
该模型将如下所示:
Naive Bayes Classifier for Discrete Predictors
Call:
naiveBayes.default(x = X, y = Y, laplace = laplace)
A-priori probabilities:
Y
0 1
0.375 0.625
Conditional probabilities:
chills
Y [,1] [,2]
0 0.3333333 0.5773503
1 0.6000000 0.5477226
...
我很有意思地找到P(chills=1|flu=1) + P(chills=0|flu=1) != 1
,在我的观点中,当flu
是积极的,一个人要么发冷还是没有。我的基本知识出了问题。概率。
我通过将所有类型更改为因子来验证我的想法,并且每个数字都匹配我的便利计算。
A-priori probabilities:
Y
0 1
0.375 0.625
Conditional probabilities:
chills
Y 0 1
0 0.6666667 0.3333333
1 0.4000000 0.6000000
...
任何人都可以向我解释当列包含数字列时,第一个场景中的概率是如何计算的...这对于任何书籍或纸张都非常有帮助。
非常感谢
答案 0 :(得分:0)
要回答您的问题:所有类别列都必须是因子,否则它们将被视为数字。
假设您使用的是e1071软件包,请参见documentation
表的列表,每个预测变量一个。对于每个类别变量,一个表针对每个属性级别给出给定目标类别的条件概率。对于每个数字变量,都有一个表,为每个目标类别给出(子)变量的均值和标准差。
这意味着,在第一个示例中,您没有看到P(chills = 1 | flu = 0)和P(chills = 0 | flu = 0)的条件概率,而是感冒= 0。然后将冷颤视为连续变量,其正态分布取决于流感。