Conditional Distributions Update

authors:
Jacob Schreiber [jmschreiber91@gmail.com]
Nicholas Farn [nicholasfarn@gmail.com]

This example shows the implementation of the classic Monty Hall problem.


In [1]:
from pomegranate import *
import numpy as np

Lets create the distributions for the guest's choice and prize's location. They are both discrete distributions and are independent of one another.


In [2]:
guest = DiscreteDistribution( { 'A': 1./3, 'B': 1./3, 'C': 1./3 } )
prize = DiscreteDistribution( { 'A': 1./3, 'B': 1./3, 'C': 1./3 } )

Now we'll create a conditional probability table for the Monty Hall problem. The results of the Monty Hall problem is dependent on both the guest and the prize.


In [3]:
monty = ConditionalProbabilityTable(
	[[ 'A', 'A', 'A', 0.0 ],
	 [ 'A', 'A', 'B', 0.5 ],
	 [ 'A', 'A', 'C', 0.5 ],
	 [ 'A', 'B', 'A', 0.0 ],
	 [ 'A', 'B', 'B', 0.0 ],
	 [ 'A', 'B', 'C', 1.0 ],
	 [ 'A', 'C', 'A', 0.0 ],
	 [ 'A', 'C', 'B', 1.0 ],
	 [ 'A', 'C', 'C', 0.0 ],
	 [ 'B', 'A', 'A', 0.0 ],
	 [ 'B', 'A', 'B', 0.0 ],
	 [ 'B', 'A', 'C', 1.0 ],
	 [ 'B', 'B', 'A', 0.5 ],
	 [ 'B', 'B', 'B', 0.0 ],
	 [ 'B', 'B', 'C', 0.5 ],
	 [ 'B', 'C', 'A', 1.0 ],
	 [ 'B', 'C', 'B', 0.0 ],
	 [ 'B', 'C', 'C', 0.0 ],
	 [ 'C', 'A', 'A', 0.0 ],
	 [ 'C', 'A', 'B', 1.0 ],
	 [ 'C', 'A', 'C', 0.0 ],
	 [ 'C', 'B', 'A', 1.0 ],
	 [ 'C', 'B', 'B', 0.0 ],
	 [ 'C', 'B', 'C', 0.0 ],
	 [ 'C', 'C', 'A', 0.5 ],
	 [ 'C', 'C', 'B', 0.5 ],
	 [ 'C', 'C', 'C', 0.0 ]], [guest, prize] )

Let's create some sample data to train our model.


In [4]:
data = [[ 'A', 'A', 'C' ],
		[ 'A', 'A', 'C' ],
		[ 'A', 'A', 'B' ],
		[ 'A', 'A', 'A' ],
		[ 'A', 'A', 'C' ],
		[ 'B', 'B', 'B' ],
		[ 'B', 'B', 'C' ],
		[ 'C', 'C', 'A' ],
		[ 'C', 'C', 'C' ],
		[ 'C', 'C', 'C' ],
		[ 'C', 'C', 'C' ],
		[ 'C', 'B', 'A' ]]

Then train our model and see the results.


In [5]:
monty.fit( data, weights=[1, 1, 3, 3, 1, 1, 3, 7, 1, 1, 1, 1] )
print(monty)


A	A	A	0.3333333333333333
A	A	B	0.3333333333333333
A	A	C	0.3333333333333333
A	B	A	0.3333333333333333
A	B	B	0.3333333333333333
A	B	C	0.3333333333333333
A	C	A	0.3333333333333333
A	C	B	0.3333333333333333
A	C	C	0.3333333333333333
B	A	A	0.3333333333333333
B	A	B	0.3333333333333333
B	A	C	0.3333333333333333
B	B	A	0.0
B	B	B	0.25
B	B	C	0.75
B	C	A	0.3333333333333333
B	C	B	0.3333333333333333
B	C	C	0.3333333333333333
C	A	A	0.3333333333333333
C	A	B	0.3333333333333333
C	A	C	0.3333333333333333
C	B	A	1.0
C	B	B	0.0
C	B	C	0.0
C	C	A	0.7
C	C	B	0.0
C	C	C	0.3