Tag: 垃圾邮件防范

C中精度浮点运算的问题

对于我的课程项目之一,我开始在C中实现“朴素贝叶斯分类器”。我的项目是使用大量训练数据实现文档分类器应用程序(尤其是垃圾邮件)。 现在由于C数据类型的限制,我在实现算法时遇到了问题。 (我在这里使用的算法, http://en.wikipedia.org/wiki/Bayesian_spam_filtering ) 问题陈述:该算法涉及获取文档中的每个单词并计算它是垃圾邮件单词的概率。 如果p1,p2 p3 …. pn是word-1,2,3 … n的概率。 使用以下方法计算doc是否为垃圾邮件的概率 这里,概率值可以非常容易地在0.01左右。 因此,即使我使用数据类型“double”,我的计算也会进行折腾。 为了证实这一点,我写了一个给出的示例代码。 #define PROBABILITY_OF_UNLIKELY_SPAM_WORD (0.01) #define PROBABILITY_OF_MOSTLY_SPAM_WORD (0.99) int main() { int index; long double numerator = 1.0; long double denom1 = 1.0, denom2 = 1.0; long double doc_spam_prob; /* Simulating FEW unlikely spam words */ for(index = 0; index < […]