MCPcopy Create free account
hub / github.com/Dod-o/Statistical-Learning-Method_Code / NaiveBayes

Function NaiveBayes

NaiveBayes/NaiveBayes.py:45–73  ·  view source on GitHub ↗

通过朴素贝叶斯进行概率估计 :param Py: 先验概率分布 :param Px_y: 条件概率分布 :param x: 要估计的样本x :return: 返回所有label的估计概率

(Py, Px_y, x)

Source from the content-addressed store, hash-verified

43 return dataArr, labelArr
44
45def NaiveBayes(Py, Px_y, x):
46 '''
47 通过朴素贝叶斯进行概率估计
48 :param Py: 先验概率分布
49 :param Px_y: 条件概率分布
50 :param x: 要估计的样本x
51 :return: 返回所有label的估计概率
52 '''
53 #设置特征数目
54 featrueNum = 784
55 #设置类别数目
56 classNum = 10
57 #建立存放所有标记的估计概率数组
58 P = [0] * classNum
59 #对于每一个类别,单独估计其概率
60 for i in range(classNum):
61 #初始化sum为0,sum为求和项。
62 #在训练过程中对概率进行了log处理,所以这里原先应当是连乘所有概率,最后比较哪个概率最大
63 #但是当使用log处理时,连乘变成了累加,所以使用sum
64 sum = 0
65 #获取每一个条件概率值,进行累加
66 for j in range(featrueNum):
67 sum += Px_y[i][j][x[j]]
68 #最后再和先验概率相加(也就是式4.7中的先验概率乘以后头那些东西,乘法因为log全变成了加法)
69 P[i] = sum + Py[i]
70
71 #max(P):找到概率最大值
72 #P.index(max(P)):找到该概率最大值对应的所有(索引值和标签值相等)
73 return P.index(max(P))
74
75
76def model_test(Py, Px_y, testDataArr, testLabelArr):

Callers 1

model_testFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected