R中的多项式朴素贝叶斯分类器

我重新提出了一个问题(名称相同)多项式朴素贝叶斯分类器。那个问题似乎已经接受了一个答案,但我认为这个答案要么是错误的,要么需要更多的解释,因为我仍然不明白。

到目前为止,我在R中看到的所有朴素贝叶斯分类器(包括bnlearnklaR)的实现都假设特征具有高斯似然分布。

在R中是否有使用多项式似然分布的朴素贝叶斯分类器的实现(类似于scikit-learn的MultinomialNB)?

特别是,如果有办法在这些模块中调用naive.bayes,使似然分布以多项式分布估计,我非常希望看到一个如何操作的例子。我已经搜索过例子,但没有找到。例如:klaR.NaiveBayes中的usekernal参数就是这个用途吗?


回答:

我不知道naive.bayes模型上的predict方法调用的是什么算法,但你可以从条件概率表(最大似然估计)中自己计算预测结果

# 你可能需要从这里获取gRain的依赖项#   source("http://bioconductor.org/biocLite.R")#   biocLite("RBGL")    library(bnlearn)    library(gRain)

使用naive.bayes帮助页面中的第一个例子

    data(learning.test)    # 拟合模型    bn <- naive.bayes(learning.test, "A")       # 查看条件概率表    fit <- bn.fit(bn, learning.test)        # 检查条件概率表(比例)是否是多项式分布的最大似然估计    # 节点A:    all.equal(prop.table(table(learning.test$A)), fit$A$prob)    # 节点B:    all.equal(prop.table(table(learning.test$B, learning.test$A),2), fit$B$prob)    # 查看预测结果 - 包括概率     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

通过运行查询从条件概率表中计算预测概率 – 使用’gRain’

    # 使用结点树算法查询    jj <- compile(as.grain(fit))    # 获取第一观测的预测概率    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     # 获取第二观测的预测概率    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得到的结果非常接近,并且是使用最大似然估计计算的,

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注