如何解决python中计算概率值的问题
此代码是使用 python 的贝叶斯分类器应用程序的一部分。我正在尝试计算每个单词相对于每个类的概率。 word_prob
变量,乘以每个类的所有概率(我们这里有 6 个类)。当我在循环中打印 word_prob
时,我在每次迭代中得到一个正确的小概率值。但是当我使用 *=
运算符时,最终的概率值乘以 2,这很奇怪!为什么会这样?有人可以帮忙吗?
提前致谢
for c in range(1,7):
word_prob = 1
for k,v in enumerate(training_data_matrix[0][:-1]):
word_count = 0
if v in filtered_words:
for doc in training_data_matrix[1:]:
if doc[-1] == str(c):
word_count += int(doc[k])
print(v,int(word_count)+1,len(filtered_words))
word_prob *= ((int(word_count)+1)/len(filtered_words))
print(word_prob)
print(c,'probability is',word_prob)
结果如下:
补偿 3 114
0.02631578947368421
网络 1 114
0.00023084025854108953
ucsd 1 114
2.0249145486060484e-06
1 概率是 2.0249145486060484e-06
解决方法
你得到的概率是 0.00000202491454860605。对你有意义吗。我可以看到每个结果之间的比率是 114。即 res1/res2 = 114,res2/resv3 = 114
尝试通过格式化打印语句
print("{:.20f}".format(word_prob))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。