【发布时间】:2021-04-11 00:03:17
【问题描述】:
此代码是使用 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
加州大学圣地亚哥分校 1 114
2.0249145486060484e-06
1个概率是2.0249145486060484e-06
【问题讨论】:
标签: python math operators probability bayesian