用代码证明朴素贝叶斯:
一、先从一个实际问题出发:
条件:碗1中有30个香草曲奇饼干和10个巧克力饼干,碗2中有上述饼干各20个。
问:闭上眼随机拿一块,从碗1中拿到香草曲奇的概率是多少?
公式:P(B|A) = P (A|B) * P(A) / P(B)
从碗1中拿到香草曲奇的概率 = 在碗1中得到香草饼干的概率(3/4)* 取出饼干的碗是碗1的概率(1/2) / 饼干是香草饼干的概念(5/8)= 60%
python代码证明:
# coding=utf-8 import random list=[[1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 2,2,2,2,2,2,2,2,2,2], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]] num = 0 for i in range(0,10000): randomnum1 = random.randint(0, 1) randomnum2 = random.randint(0, 39) #print "拿到了"+str(list[randomnum1][randomnum2]) if list[randomnum1][randomnum2] == 1: num += 1 print "一万次中拿到香草曲奇有"+ str(num) +"次"
结论:实验结果逼近60%,一万次中拿到香草曲奇为6128左右。