上一期文章:「12」你们啊,naive!——朴素贝叶斯谈笑录 中,我们剖析了朴素贝叶斯算法的本质和特点以及贝叶斯学派的一些知识。这里我们用python代码进行Naive Bayes算的的实现。第1部分是计算打喷嚏的建筑工人患上新冠肺炎的概率,第2部分是上一期文章中提到的西瓜分类实战项目。
class NBClassify(object):
def __init__(self, fillNa = 1):
self.fillNa = 1
pass
def train(self, trainSet):
# 计算每种类别的概率
# 保存所有tag的所有种类,及它们出现的频次
dictTag = {}
for subTuple in trainSet:
dictTag[str(subTuple[1])] = 1
if
str(subTuple[1]) not in dictTag.keys()
else
dictTag[str(subTuple[1])] + 1
# 保存每个tag本身的概率
tagProbablity = {}
totalFreq = sum([value for value in dictTag.values()])
for key, value in dictTag.items():
tagProbablity[key] = value / totalFreq
# print(tagProbablity)
self.tagProbablity = tagProbablity
###########