我再次问这个问题(名称相同) 多项朴素贝叶斯分类器 。 这个问题似乎已经接受一个答案,我认为是错误的或者还是我想更多的解释,因为我还是不明白。
到目前为止,我在R(包括已经看到每一个朴素贝叶斯分类bnlearn和KLAR )有一个假设的特征具有高斯可能性的实现。
是否有R A朴素贝叶斯分类器使用多项可能性的实现(类似于scikit学习的MultinomialNB )?
特别是-如果事实证明有调用的一些方法naive.bayes
在这两种模块使似然估计与多项分布-我会很感激的是如何做的例子。 我搜索过的例子,并没有发现任何。 例如:是这样的了么usekernal
参数是在klaR.NaiveBayes
?
我不知道是什么算法predict
的方法调用naive.bayes
模型,但你可以自己从条件概率表计算的预测(MLE估计)
# You may need to get dependencies of gRain from here
# source("http://bioconductor.org/biocLite.R")
# biocLite("RBGL")
library(bnlearn)
library(gRain)
使用与第一例子naive.bayes
帮助页面
data(learning.test)
# fit model
bn <- naive.bayes(learning.test, "A")
# look at cpt's
fit <- bn.fit(bn, learning.test)
# check that the cpt's (proportions) are the mle of the multinomial dist.
# Node A:
all.equal(prop.table(table(learning.test$A)), fit$A$prob)
# Node B:
all.equal(prop.table(table(learning.test$B, learning.test$A),2), fit$B$prob)
# look at predictions - include probabilities
pred <- predict(bn, learning.test, prob=TRUE)
pr <- data.frame(t(attributes(pred)$prob))
pr <- cbind(pred, pr)
head(pr, 2)
# preds a b c
# 1 c 0.29990442 0.33609392 0.36400165
# 2 a 0.80321241 0.17406706 0.02272053
通过运行查询计算从CPT的预测概率 - 用“粮食”
# query using junction tree- algorithm
jj <- compile(as.grain(fit))
# Get ptredicted probs for first observation
net1 <- setEvidence(jj, nodes=c("B", "C", "D", "E", "F"),
states=c("c", "b", "a", "b", "b"))
querygrain(net1, nodes="A", type="marginal")
# $A
# A
# a b c
# 0.3001765 0.3368022 0.3630213
# Get ptredicted probs for secondobservation
net2 <- setEvidence(jj, nodes=c("B", "C", "D", "E", "F"),
states=c("a", "c", "a", "b", "b"))
querygrain(net2, nodes="A", type="marginal")
# $A
# A
# a b c
# 0.80311043 0.17425364 0.02263593
因此,这些概率是相当接近你会得到什么bnlearn
和使用MLE的计算,