多项朴素贝叶斯分类中的R(Multinomial Naive Bayes classifier in

2019-10-20 04:18发布

我再次问这个问题(名称相同) 多项朴素贝叶斯分类器 。 这个问题似乎已经接受一个答案,我认为是错误的或者还是我想更多的解释,因为我还是不明白。

到目前为止,我在R(包括已经看到每一个朴素贝叶斯分类bnlearn和KLAR )有一个假设的特征具有高斯可能性的实现。

是否有R A朴素贝叶斯分类器使用多项可能性的实现(类似于scikit学习的MultinomialNB )?

特别是-如果事实证明有调用的一些方法naive.bayes在这两种模块使似然估计与多项分布-我会很感激的是如何做的例子。 我搜索过的例子,并没有发现任何。 例如:是这样的了么usekernal参数是在klaR.NaiveBayes

Answer 1:

我不知道是什么算法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的计算,



文章来源: Multinomial Naive Bayes classifier in R