计算所属类的概率
既然我们可以计算一个属性属于某个类的概率,那么归并一个数据样本中所有属性的概率,最后便获得全部数据样本属于某个类的概率。
应用乘法归并概率,鄙人面的calculClassProbilities()函数中,给定一个数据样本,它所属每个类其余概率,可以经由过程将其属性概率相乘获得。结不雅是一个类值到概率的映射。
- def calculateClassProbabilities(summaries, inputVector):
- probabilities = {}
- for classValue, classSummaries in summaries.iteritems():
- probabilities[classValue] = 1
- for i in range(len(classSummaries)):
- mean, stdev = classSummaries[i]
- x = inputVector[i]
- probabilities[classValue] *= calculateProbability(x, mean, stdev)
- return probabilities
测试calculateClassProbabilities()函数。
- summaries = {0:[(1, 0.5)], 1:[(20, 5.0)]}
- inputVector = [1.1, '?']
- probabilities = calculateClassProbabilities(summaries, inputVector)
- print('Probabilities for each class: {0}').format(probabilities)
- Probabilities for each class: {0: 0.7820853879509118, 1: 6.298736258150442e-05}
单一猜测
既然可以计算一个数据样本属于每个类的概率,那么我们可以找到最大年夜的概率值,并返回接洽关系的类。
下面的predict()函数可以完成以上义务。
- def predict(summaries, inputVector):
- probabilities = calculateClassProbabilities(summaries, inputVector)
- bestLabel, bestProb = None, -1
- for classValue, probability in probabilities.iteritems():
- if bestLabel is None or probability > bestProb:
- bestProb = probability
- bestLabel = classValue
- return bestLabel
测试predict()函数如下:
我们可以经由过程盘似揭捉?本归属于每个类的概率,然后选择具有最高概率的类来做猜测。