为了账号安全,请及时绑定邮箱和手机立即绑定

如何实现贝叶斯?

/ 猿问

如何实现贝叶斯?

大家好,我现在用R语言实现贝叶斯结构学习。按照Bayesan Networks in R书上的代码复制:



arcs(ug, ignore.cycles = TRUE) = matrix(c("MECH", "VECT", "MECH", "ALG", "VECT", "MECH", "VECT", "ALG", "ALG", "MECH", "ALG", "VECT", "ALG", "ANL", "ALG", "STAT", "ANL", "ALG", "ANL", "STAT", "STAT", "ALG", "STAT", "ANL"), ncol = 2, byrow = TRUE, dimnames = list(c(), c("from", "to")))
运行之后报错为:


Error in `arcs<-`(`*tmp*`, ignore.cycles = TRUE, value = c("MECH", "MECH", : unused argument (ignore.cycles = TRUE)
请问是为什么?感谢解答

查看完整描述

2 回答

?
达令说

在python scikit-learn中(20180808更新):


 朴素贝叶斯是一类比较简单的算法,scikit-learn中朴素贝叶斯类库的使用也比较简单。相对于决策树,KNN之类的算法,朴素贝叶斯需要关注的参数是比较少的,这样也比较容易掌握。在scikit-learn中,一共有3个朴素贝叶斯的分类算法类。分别是GaussianNB,MultinomialNB和BernoulliNB。


其中GaussianNB就是先验为高斯分布的朴素贝叶斯,MultinomialNB就是先验为多项式分布的朴素贝叶斯,而BernoulliNB就是先验为伯努利分布的朴素贝叶斯。


    这三个类适用的分类场景各不相同,一般来说,如果样本特征的分布大部分是连续值,使用GaussianNB会比较好。如果如果样本特征的分大部分是多元离散值,使用MultinomialNB比较合适。而如果样本特征是二元离散值或者很稀疏的多元离散值,应该使用BernoulliNB。


查看完整回答
反对 回复 2019-06-12
?
吃鸡游戏

 贝叶斯网络基本概念有两个:引入了一个有向无环图(Directed Acyclic Graph)和一个条件概率表集合。


    DAG。DAG的结点V包括随机变量(类别和特征),有向连接E(A->B)表示结点A是结点B的parent,且B与A是有依赖关系的(不独立)。


    条件概率表集合。同时引入了一个条件性独立(conditional independence)概念:即图中任意结点v在给定v的parent结点的情况下,与图中其它结点都是独立的,也就是说P(v|par(v),x1,x2...,xn) = P(v|par(v))。这里par(v)表示v的parent结点集,x1,x2,...,xn表示图中其它结点。


 


    我们清楚,如果已知所有联合概率值(joint distribution),那么任何形式的概率问题都可以迎刃而解。而现实是当特征集合过大(>10)时你几乎无法通过统计得到。而特征集合的大小在"一定程度上"与最终的分类效果是一个正反馈关系。


 


    所以,这个问题的解决就是通过条件独立的概念来对各条件概率值进行优化。具体可以参见参考文件的bayesian net的tutorial,我这里不再阐述了(来自博客分类算法之朴素贝叶斯(Naive Bayes)和贝叶斯网络(Bayesian Networks))。


原文:https://blog.csdn.net/sinat_26917383/article/details/51569573 



查看完整回答
反对 回复 2019-06-12

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信