首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连续特征的橙Bayes算法

连续特征的橙Bayes算法
EN

Stack Overflow用户
提问于 2015-06-17 15:11:18
回答 1查看 77关注 0票数 0

我有一个具有四个连续特征的两类Bayes分类问题。我正在尝试部分复制Orange用于计算概率的bayes算法。但我没有成功地获得与Orange输出相同的值。

数据集大小: 150 (class0 : 88和class1 : 62)

我使用以下算法

代码语言:javascript
复制
p(class0 | X1, X2, X3, X4) = L0 / (L0 + L1)
p(class1 | X1, X2, X3, X4) = L1 / (L0 + L1)

其中L0和L1是可能的

代码语言:javascript
复制
L0 = prior_class0 * product( p(Xi|class0) )
L1 = prior_class1 * product( p(Xi|class1) )

prior_class0 and prior_class1 are Laplacian estimators

prior_class0 = (88 + 1) / (150 + 2)
prior_class1 = (62 + 1) / (150 + 2)

橙色使用黄土来计算条件概率(我想没有必要复制它)。对于这个数据集,它为这两个类输出49点,如python classifier.conditional_distributions中所示。通过对Xi环境点之间的线性插值,可以计算出p(Xi_X_Class1 0)和p(Xi_X_1)。

( 1)对于具有连续特征的Orange Bayes算法,有谁能给出评论?

( 2)或任何技术建议,如何设置编译器/IDE,以便调试Orange C++代码,并检查橙色/源代码/橙色/Bayes.cpp中函数的一些中间结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-18 16:16:16

橙色使用了一个稍微不同的公式,根据科诺年科的说法,它给出了同样的结果,但允许更好的解释性和概率的m-估计。它计算的不是乘积(p(Xi\class0)),而是计算乘积(p(class0\Xi)/ p(class0))。我不认为这会影响你的计算,但你可以检查。计算这些概率的代码位于https://github.com/biolab/orange/blob/master/source/orange/bayes.cpp#L169。注意,它并行地执行所有类的操作。

你感兴趣的另一个代码是从黄土密度估计中计算概率。在https://github.com/biolab/orange/blob/master/source/orange/estimateprob.cpp#L307。注意,大多数操作都是关于向量的,例如,*result *= (x-x1)/(x2-x1);中的所有变量实际上都是向量。

至于调试,我用Visual编写了这段代码(很多年前,我不好意思承认--看到了我使用的糟糕的编码风格)。我忘记了版本,不能检查它,因为我不再使用Windows。但我从来没有真正在任何其他操作系统上调试过橙色。

如果加载项目并构建调试版本,则还必须构建Python的调试版本。这实际上很简单(请参阅Python源代码中的说明),问题是您还必须构建您所使用的任何其他二进制库(例如numpy)的调试版本。一种更简单的方法是构建Orange的发布版本,但打开调试信息标志。这样,您就可以使用标准Python和库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30895576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档