贝叶斯决策经典实例————红绿球问题
假设有两个各装了100个球的箱子,甲箱子中有70个红球,30个绿球,乙箱子中有30个红球,70个绿球。假设随机选择其中一个箱子,从中拿出一个球记下球色再放回原箱子,如此重复12次,记录得到8次红球,4次绿球。问题来了,你认为被选择的箱子是甲箱子的概率有多大?
python实现如下
def bayesianfunc(pIsBox1, pBox1, pBox2): #pIsBox1表示为甲箱,pBox1/2表示甲/乙箱中的信息
return ((pIsBox1 * pBox1)/(pBox1 * pIsBox1 + pBox2*(1 - pIsBox1)))
def RedGreenBallproblem():
pIsBox1 = 0.5
#对pIsBox1进行8次红球修正
for i in range(1,9):
pIsBox1 = bayesianfunc(pIsBox1, 0.7, 0.3)
print ("拿到 %d 个球是红球,则选择的箱子是甲箱的概率为:%f" %(i, pIsBox1))
#对pIsBox1进行4次绿球修正
for i in range(1,5):
pIsBox1 = bayesianfunc(pIsBox1, 0.3, 0.7)
print ("拿到 %d 个球是绿球,则选择的箱子是甲箱的概率为:%f" %(i, pIsBox1))
RedGreenBallproblem()
程序结果
拿到 1 个球是红球,则选择的箱子是甲箱的概率为:0.700000
拿到 2 个球是红球,则选择的箱子是甲箱的概率为:0.844828
拿到 3 个球是红球,则选择的箱子是甲箱的概率为:0.927027
拿到 4 个球是红球,则选择的箱子是甲箱的概率为:0.967365
拿到 5 个球是红球,则选择的箱子是甲箱的概率为:0.985748
拿到 6 个球是红球,则选择的箱子是甲箱的概率为:0.993842
拿到 7 个球是红球,则选择的箱子是甲箱的概率为:0.997351
拿到 8 个球是红球,则选择的箱子是甲箱的概率为:0.998863
拿到 1 个球是绿球,则选择的箱子是甲箱的概率为:0.997351
拿到 2 个球是绿球,则选择的箱子是甲箱的概率为:0.993842
拿到 3 个球是绿球,则选择的箱子是甲箱的概率为:0.985748
拿到 4 个球是绿球,则选择的箱子是甲箱的概率为:0.967365