python - 在python中计算概率值的问题
问题描述
此代码是使用 python 的贝叶斯分类器应用程序的一部分。我正在尝试计算每个单词相对于每个类的概率。
word_prob
这里的变量,将每个类的所有概率相乘(我们这里有 6 个类)。当我在循环中打印word_prob
时,我在每次迭代中得到一个正确的小概率值。但是当我使用*=
operator时,最终的概率值乘以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)
这是结果:
comp 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))
推荐阅读
- flutter - 如何使用 list.generate 方法制作 GlobalKey 列表?
- android - 在虚拟设备上运行应用程序时,.so 文件未加载
- c# - 为什么 C# 'is' 运算符在比较两个布尔值时会给出正确的结果,我应该使用它吗?
- java - 如何使用 Gradle 复制 java 包
- gremlin - 如何获得独立于内部结构的子图?
- vba - 将word文档中的所有文本复制到另一个word文档而不格式化
- google-cloud-ml - CPU/GPU 缩放日志
- reactjs - 是否可以将相机拍摄的图像直接上传到 Firebase 存储?
- laravel - 仅仅为了避免 REST 反模式而为基本相同的逻辑定义两个单独的 API 端点?
- hibernate - 向 JPA 中的 ManyToMany 集合添加条目时如何避免不必要的查询?