Skip to content

Instantly share code, notes, and snippets.

@rtbs-dev
Last active March 24, 2023 16:43
Show Gist options
  • Save rtbs-dev/1349864212b25cce91dbe5e336d794b4 to your computer and use it in GitHub Desktop.
Save rtbs-dev/1349864212b25cce91dbe5e336d794b4 to your computer and use it in GitHub Desktop.
Bayesian Network Models in PyMC3 and NetworkX
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import pymc3 as pm\n",
"import theano.tensor as T\n",
"from theano.compile.ops import as_op\n",
"import theano"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Bayesian Network Models in PyMC3 and NetworkX\n",
"## Taken from PMML 4.3\n",
"\n",
"We start with a simple network having several continuous and several discrete (categorical) distributions. We have to define the conditional probabilities for each case in the categorical nodes. \n",
"\n",
"<img src=\"http://dmg.org/pmml/v4-3/BNExampleModel.png\" alt=\"alt text\" width=\"400\" height=\"400\" align=\"left\">\n",
"\n",
"$D_1$ | Probability\n",
"-----|-------\n",
"0\t | 0.3\n",
"1 |\t 0.7\n",
"\n",
"$D_2$\t| Probability\n",
"----|----\n",
"0\t| 0.6\n",
"1\t| 0.3\n",
"2\t| 0.1\n",
" \n",
"\n",
"|| $D_1$=0\t| $D_1$=1\n",
"|------------|----------------------|----\n",
"|P$(C_1|D_1)$ |\t$\\mathcal{N}$(10,2)|\t$\\mathcal{N}$(14,2)|\n",
"\n",
"|| $D_2$=0\t| $D_2$=1 | $D_2$=2\n",
"|------------|----------------------|----\n",
"|P$(C_2|D_2)$ |\t$\\mathcal{N}$(6,2)|\t$\\mathcal{N}$(8,1)| $\\mathcal{N}$(14,1)|\n",
"\n",
"\n",
"$$P(C_4 | C_2) = \\mathcal{N}(0.1 C_2^2 + 0.6C_2 + 1, 2)$$\n",
"\n",
"|| $D_3$=0\t| $D_3$=1\n",
"|------------|----------------------|----\n",
"|P$(C_3|C_2)$ |\t$\\mathcal{N}$(0.15C_2^2,2)|\t$\\mathcal{N}$(0.15C_2,1)|\n",
"\n",
"\n",
"|<td colspan=3>$D_1$=0 <td colspan=3>$D_1$=1\n",
"|-\n",
"|$D_3$ | $D_2$ = 0 | $D_2$ = 1 | $D_2$ = 2 | $D_2$ = 0 | $D_2$ = 1 | $D_2$ = 2\n",
"|0\t| 0.1 | 0.3 | 0.4 | 0.6\t| 0.8 | 0.9\n",
"|1\t| 0.9 |\t0.7 | 0.6 | 0.4 | 0.2 | 0.1\n",
"\n",
"|<td colspan=3>$D_3$=0</td> <td colspan=3>$D_3$=1</td>\n",
"|-\n",
"|$D_3$ | $C_3$ < 9 | 9 < $C_3$ < 11 | $C_3$ > 11 | $C_3$ < 9 | 9 < $C_3$ < 11 | $C_3$ > 11\n",
"|0 | 0.4 | 0.3 | 0.6 | 0.4 | 0.1 | 0.3\n",
"|1 | 0.6 | 0.7 | 0.4 | 0.6 | 0.9 | 0.7\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"d1_prob = np.array([0.3,0.7]) # 2 choices\n",
"d2_prob = np.array([0.6,0.3,0.1]) # 3 choices\n",
"d3_prob = np.array([[[0.1, 0.9], # (2x3)x2 choices\n",
" [0.3, 0.7], \n",
" [0.4, 0.6]], \n",
" [[0.6, 0.4], \n",
" [0.8, 0.2],\n",
" [0.9, 0.1]]])\n",
"d4_prob = np.array([[[0.4, 0.6], # (2x3)x2 choices\n",
" [0.6, 0.4],\n",
" [0.3, 0.7]],\n",
" [[0.4, 0.6], \n",
" [0.3, 0.7],\n",
" [0.1, 0.9]]])\n",
"\n",
"c1_mu, c1_sd = np.array([[10, 14], # 2 choices inherit\n",
" [2 , 2 ]])\n",
"c2_mu, c2_sd = np.array([[6, 8, 14], # 3 choices inherit\n",
" [2, 1, 1 ]])\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Standard Approach in PyMC3\n",
"First we will build up the network using variable instantiation for each node. The \"edges\" here are really just indications that the distribution parameters are conditional upon the node's parents. \n",
"\n",
"I haven't been able to quite figure out a fast way of getting the inequality conditionals to work in Theano without using an ugly \"switch\" statement (node `C3`'s discretization for `C4`'s conditions). But, this works faster in Theano than a long python if-else block for now. \n",
"\n",
"Additionally, it's possible to write the combination of distributions into a continuous node in terms of a `NormalMixture()`, where the discrete parents are drawn from a `Dirichlet()` prior. Technically possible, but causes an inexplicable \n",
"```\n",
"python.exe has stopped working\n",
"``` \n",
"on my system (and python crashes on Linux, too), so maybe that will work out eventually as updates are rolled out. "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"with pm.Model() as model:\n",
" \n",
" D1 = pm.Categorical('D1',p=d1_prob)\n",
" D2 = pm.Categorical('D2',p=d2_prob)\n",
" \n",
" C1 = pm.Normal('C1',mu = 10 + 4*D1, tau = (1./2)**2)\n",
"# p1 = pm.Dirichlet('p1', d1_prob) # inexplicable failure\n",
"# C1 = pm.NormalMixture('C1', p1, mu=c1_mu, sd=c1_sd) # inexplicable failure\n",
" \n",
" C2 = pm.Normal('C2',mu=6+2*(D2**2), tau=1)\n",
"# p2 = pm.Dirichlet('p2', d2_prob) # inexplicable failure\n",
"# C2 = pm.NormalMixture('C2', p2, mu=c2_mu, sd=c2_sd) # inexplicable failure\n",
" \n",
" D3_prob = theano.shared(d3_prob) # make numpy-->theano\n",
" D3_0 = D3_prob[D1, D2] # select the prob array that \"happened\" thanks to parents\n",
" D3 = pm.Categorical('D3',p=D3_0)\n",
"\n",
" C3 = pm.Normal('C3',mu = (0.15*(C2**2)*(1-D3) + 1.5*C2*D3), tau=(1./(2-D3))**2)\n",
" C4 = pm.Normal('C4',mu = 0.1*C2**2 + 0.6*C2+1, tau = 0.25, observed = [7])\n",
" \n",
"# C3_0 = np.select([T.lt(C3,9), T.gt(C3,9) & T.lt(C3,11), T.gt(C3,11)], [0,1,2]) # doesnt work in Theano\n",
" C3_0 = T.switch(T.lt(C3,9), 0, \n",
" T.switch(T.gt(C3, 9) & T.lt(C3,11), 1, 2)) # ugly (and hard to generalize)\n",
"\n",
" D4_prob = theano.shared(d4_prob) # make numpy-->theano \n",
" D4_0 = D4_prob[D3, C3_0] # select the prob array that \"happened\" thanks to parents\n",
" \n",
" D4 = pm.Categorical('D4', p=D4_0, observed=[0])\n",
"\n",
"# Create MCMC object"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Assigned BinaryGibbsMetropolis to D1\n",
"Assigned CategoricalGibbsMetropolis to D2\n",
"Assigned NUTS to C1\n",
"Assigned NUTS to C2\n",
"Assigned BinaryGibbsMetropolis to D3\n",
"Assigned NUTS to C3\n",
"100%|███████████████████████████████████| 10000/10000 [00:23<00:00, 420.89it/s]\n"
]
}
],
"source": [
"with model:\n",
" trace = pm.sample(10000)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Results\n",
"PyMC3 automatically assigned the super-efficient NUTS sampler where possible, and various versions of Metropolis to the rest of the nodes. Lets see how well our results compare to the ones listed in the [PMML example](http://dmg.org/pmml/v4-3/BayesianNetwork.html):"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"C1:\n",
"\n",
" Mean SD MC Error 95% HPD interval\n",
" -------------------------------------------------------------------\n",
" \n",
" 12.902 2.637 0.062 [7.437, 17.571]\n",
"\n",
" Posterior quantiles:\n",
" 2.5 25 50 75 97.5\n",
" |--------------|==============|==============|--------------|\n",
" \n",
" 7.486 11.149 13.155 14.751 17.634\n",
"\n",
"\n",
"C2:\n",
"\n",
" Mean SD MC Error 95% HPD interval\n",
" -------------------------------------------------------------------\n",
" \n",
" 5.746 0.784 0.013 [4.186, 7.284]\n",
"\n",
" Posterior quantiles:\n",
" 2.5 25 50 75 97.5\n",
" |--------------|==============|==============|--------------|\n",
" \n",
" 4.242 5.215 5.737 6.264 7.366\n",
"\n",
"\n",
"C3:\n",
"\n",
" Mean SD MC Error 95% HPD interval\n",
" -------------------------------------------------------------------\n",
" \n",
" 6.730 2.534 0.058 [1.738, 10.986]\n",
"\n",
" Posterior quantiles:\n",
" 2.5 25 50 75 97.5\n",
" |--------------|==============|==============|--------------|\n",
" \n",
" 1.255 5.004 7.151 8.634 10.696\n",
"\n",
"None\n"
]
},
{
"data": {
"text/plain": [
"array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000000001A0F34A8>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x000000001A2FDCF8>],\n",
" [<matplotlib.axes._subplots.AxesSubplot object at 0x000000001A3CD0B8>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x000000001B7A3BA8>],\n",
" [<matplotlib.axes._subplots.AxesSubplot object at 0x000000001B8562B0>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x000000001B90DEF0>]], dtype=object)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nzzC+eHtpAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a205e48>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print pm.summary(trace, varnames=['C1', 'C2', 'C3'], start=1000)\n",
"pm.traceplot(trace[1000:], varnames=['C1', 'C2', 'C3'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Not bad. So, let's do something a bit more sophisticated. Eventually, it would be nice to create a PyMC3 BayesNet on the fly, reading in a specification (like PMML, for example!) and generating/running the theano model. The 'pythonic' way to do programmatic variable instantiation is to use a dictionary...and one of my other favorite packages is essentially a package for graphs built on dicts!\n",
"\n",
"\n",
"## NetworkX with PyMC3\n",
"\n",
"The interesting thing here is that \n",
"- pymc3 works this way, and even though it really should, somehow I'm amazed it worked first try, no errors. yay!\n",
"- we can pre-define the entire network, with all of the necessary data as graph (node or edge) attributes...\n",
"- letting us apply PyMC3 distribution objects *later on*. \n",
"\n",
"The fully parsed version of this from some schema like PMML doesnt exist yet, so treat the following as a proof of concept:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import networkx as nx"
]
},
{
"cell_type": "code",
"execution_count": 130,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"d1_prob = np.array([0.3,0.7]) # 2 choices\n",
"d2_prob = np.array([0.6,0.3,0.1]) # 3 choices\n",
"d3_prob = np.array([[[0.1, 0.9], # (2x3)x2 choices\n",
" [0.3, 0.7], \n",
" [0.4, 0.6]], \n",
" [[0.6, 0.4], \n",
" [0.8, 0.2],\n",
" [0.9, 0.1]]])\n",
"d4_prob = np.array([[[0.4, 0.6], # (2x3)x2 choices\n",
" [0.6, 0.4],\n",
" [0.3, 0.7]],\n",
" [[0.4, 0.6], \n",
" [0.3, 0.7],\n",
" [0.1, 0.9]]])\n",
"\n",
"c1_mu, c1_sd = np.array([[10, 14], # 2 choices inherit\n",
" [2 , 2 ]])\n",
"c2_mu, c2_sd = np.array([[6, 8, 14], # 3 choices inherit\n",
" [2, 1, 1 ]])\n",
"\n",
"\n",
"BN = nx.DiGraph()\n",
"\n",
"BN.add_node('D1', dtype='Discrete', prob=d1_prob, pos=(2, 4))\n",
"BN.add_node('D2', dtype='Discrete', prob=d2_prob, pos=(4, 4))\n",
"\n",
"BN.add_node('C1', dtype='Continuous', mu=c1_mu, sd=c1_sd, pos=(1,3))\n",
"BN.add_edge('D1', 'C1')\n",
"BN.add_node('C2', dtype='Continuous', mu=c2_mu, sd=c2_sd, pos=(5,3))\n",
"BN.add_edge('D2', 'C2')\n",
"\n",
"BN.add_node('D3', dtype='Discrete', prob = d3_prob, pos=(3, 3))\n",
"BN.add_edges_from([('D1', 'D3'), ('D2', 'D3')])\n",
"\n",
"BN.add_node('C3', dtype='Continuous', pos=(4, 2))\n",
"BN.add_edges_from([('D3', 'C3'), ('C2', 'C3')])\n",
"\n",
"BN.add_node('C4', dtype='Continuous', observe=np.array([7.]), pos=(6, 2))\n",
"BN.add_edge('C2', 'C4')\n",
"\n",
"BN.add_node('D4', dtype='Discrete', prob=d4_prob, observe=np.array([0.]), pos=(2, 1))\n",
"BN.add_edges_from([('D3', 'D4'), ('C3', 'D4')])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's make sure things are looking right...for example, the parents of the `C4` node are..."
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[('D4', {'dtype': 'Discrete', 'observe': array([ 0.]), 'prob': array([[[ 0.4, 0.6],\n",
" [ 0.6, 0.4],\n",
" [ 0.3, 0.7]],\n",
"\n",
" [[ 0.4, 0.6],\n",
" [ 0.3, 0.7],\n",
" [ 0.1, 0.9]]]), 'pos': (2, 1)}), ('C3', {'dtype': 'Continuous', 'pos': (4, 2)}), ('C2', {'mu': array([ 6, 8, 14]), 'dtype': 'Continuous', 'pos': (5, 3), 'sd': array([2, 1, 1])}), ('C1', {'mu': array([10, 14]), 'dtype': 'Continuous', 'pos': (1, 3), 'sd': array([2, 2])}), ('C4', {'dtype': 'Continuous', 'observe': array([ 7.]), 'pos': (6, 2)}), ('D2', {'dtype': 'Discrete', 'prob': array([ 0.6, 0.3, 0.1]), 'pos': (4, 4)}), ('D3', {'dtype': 'Discrete', 'prob': array([[[ 0.1, 0.9],\n",
" [ 0.3, 0.7],\n",
" [ 0.4, 0.6]],\n",
"\n",
" [[ 0.6, 0.4],\n",
" [ 0.8, 0.2],\n",
" [ 0.9, 0.1]]]), 'pos': (3, 3)}), ('D1', {'dtype': 'Discrete', 'prob': array([ 0.3, 0.7]), 'pos': (2, 4)})]\n",
"{'C2': {}}\n"
]
}
],
"source": [
"print BN.nodes(data=True)\n",
"print BN.pred['C4']\n",
"# [BN.node[i] for i in BN.predecessors_iter('D4')]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can get on with instantiating the theano computation graph. Note that we are referencing each node as a location in a graph, and pulling the objects needed to caclulate parameters *directly from the parent nodes*, whatever those are. \n",
"\n",
"Something tricky to notice: NetworkX seems to like to return the predecessors (parents) in the reverse order that they were created in, so keep that in mind when inheriting from >1 parent (note the `num=1` argument in the utility, when intuitively that should be 0). "
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# utily to quickly access the parent nodes' pymc3 objects\n",
"def gpm(BN, node, num=0):\n",
" return BN.node[BN.predecessors(node)[num]]['dist_obj']\n",
"\n",
"with pm.Model() as mod2:\n",
" \n",
" BN.node['D1']['dist_obj'] = pm.Categorical('D1',p=BN.node['D1']['prob'])\n",
" BN.node['D2']['dist_obj'] = pm.Categorical('D2',p=BN.node['D2']['prob'])\n",
" \n",
" BN.node['C1']['dist_obj'] = pm.Normal('C1', mu=10+4*gpm(BN,'C1'),\n",
" tau = (1./2)**2)\n",
" BN.node['C2']['dist_obj'] = pm.Normal('C2', mu=6+2*(gpm(BN,'C2'))**2,\n",
" tau = 1.)\n",
" \n",
" BN.node['D3']['dist_obj'] = pm.Categorical('D3', p=theano.shared(BN.node['D3']['prob'])[\n",
" gpm(BN,'D3', num=1),\n",
" gpm(BN,'D3', num=0)\n",
" ])\n",
" \n",
" BN.node['C3']['dist_obj'] = pm.Normal('C3', mu = (.15*(gpm(BN,'C3')**2)*(1-gpm(BN,'C3',num=1))+\\\n",
" 1.5*gpm(BN,'C3')*gpm(BN,'C3',num=1)),\n",
" tau=(1./(2-gpm(BN,'C3', num=1)))**2)\n",
" \n",
" BN.node['C4']['dist_obj'] = pm.Normal('C4', mu=0.1*gpm(BN,'C4')**2 + 0.6*gpm(BN,'C4')+1,\n",
" tau=.25, observed=BN.node['C4']['observe'])\n",
" \n",
" BN.edge['C3']['D4']['bin'] = T.switch(T.lt(gpm(BN,'D4'),9), 0, \n",
" T.switch(T.gt(gpm(BN,'D4'), 9) & T.lt(gpm(BN,'D4'),11), 1, 2))\n",
" \n",
" BN.node['D4']['dist_obj'] = pm.Categorical('D4', p=theano.shared(BN.node['D4']['prob'])[\n",
" gpm(BN,'D4', num=1),\n",
" BN.edge['C3']['D4']['bin']\n",
" ], observed=BN.node['D4']['observe'])\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Assigned BinaryGibbsMetropolis to D1\n",
"Assigned CategoricalGibbsMetropolis to D2\n",
"Assigned NUTS to C1\n",
"Assigned NUTS to C2\n",
"Assigned BinaryGibbsMetropolis to D3\n",
"Assigned NUTS to C3\n",
"100%|███████████████████████████████████| 10000/10000 [00:21<00:00, 461.79it/s]\n"
]
}
],
"source": [
"with mod2:\n",
" trace = pm.sample(10000)"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"C1:\n",
"\n",
" Mean SD MC Error 95% HPD interval\n",
" -------------------------------------------------------------------\n",
" \n",
" 12.809 2.714 0.064 [7.356, 17.731]\n",
"\n",
" Posterior quantiles:\n",
" 2.5 25 50 75 97.5\n",
" |--------------|==============|==============|--------------|\n",
" \n",
" 7.204 10.962 13.027 14.772 17.602\n",
"\n",
"\n",
"C2:\n",
"\n",
" Mean SD MC Error 95% HPD interval\n",
" -------------------------------------------------------------------\n",
" \n",
" 5.733 0.784 0.015 [4.146, 7.243]\n",
"\n",
" Posterior quantiles:\n",
" 2.5 25 50 75 97.5\n",
" |--------------|==============|==============|--------------|\n",
" \n",
" 4.215 5.209 5.726 6.244 7.324\n",
"\n",
"\n",
"C3:\n",
"\n",
" Mean SD MC Error 95% HPD interval\n",
" -------------------------------------------------------------------\n",
" \n",
" 6.809 2.512 0.053 [1.811, 10.939]\n",
"\n",
" Posterior quantiles:\n",
" 2.5 25 50 75 97.5\n",
" |--------------|==============|==============|--------------|\n",
" \n",
" 1.283 5.088 7.230 8.667 10.734\n",
"\n"
]
},
{
"data": {
"text/plain": [
"array([[<matplotlib.axes._subplots.AxesSubplot object at 0x0000000023520048>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x000000002983FC50>],\n",
" [<matplotlib.axes._subplots.AxesSubplot object at 0x00000000299587F0>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x000000002984CE10>],\n",
" [<matplotlib.axes._subplots.AxesSubplot object at 0x0000000029B4C1D0>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x0000000029B7B6D8>]], dtype=object)"
]
},
"execution_count": 96,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x29799b70>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pm.summary(trace, varnames=['C1', 'C2', 'C3'], start=1000)\n",
"pm.traceplot(trace[1000:], varnames=['C1', 'C2', 'C3'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Awesome! And mystically it even went a little *faster* than before, so who knows why that is. But regardless if that's the case or not, it's definitely possible to get a working, **procedural** bayesian network generation using dictionaries (aka NetworkX) and PyMC3 random variables. This opens the door to parsing other serialized bayes-net schema from json or xml/pmml files, and potentially serializing ones created as above. \n",
"\n",
"Some crucial things, and some nice-to-haves, still needed:\n",
"\n",
" 1. **Arbitrary functions at nodes**: Rather than directly inputing the desired function of the parents into the pymc3 object instatiation, I *hope* there is a way to pre-define theano functions and store those as node-atributes a priori (calling on them latter with a list of parent nodes as input). I'm rather new to Theano, so I'm not sure if this is possible before compilation.\n",
" 2. **Automated organization of tree layout**: visualization is imperative in bayes nets, and without calls to graphviz (which is so incredibly broken on Windows, and caused me headaches on linux) there isn't a built-in way to auto-layout a tree in networkX. \n",
" 3. **Structure inference from a set of equations**: It would be glorious to have a system defined as a set of equations, perhaps with Sympy, and have the net-structure inferred from the equations themselves. Then, input these equations (along with priors for each variable) into a \"magic box\" that compiles a PyMC3+NetworkX bayes net to do inference on observations of the system. \n",
" \n",
"As for 2, I went ahead and added \"pos\" arguments to each node already, so we can actually visualize something. Heres our net:"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nOSnkQgihc/8P9h0WFLicXsAAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x2c724358>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"nx.draw_networkx(BN, pos=nx.get_node_attributes(BN,'pos'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In addition, we can retroactively assign the nodes to have the pymc3 sampling traces, and make a new \"compiled\" net with updated distribution parameters. I'll leave this as *an exercise for the reader*... "
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"for node in trace.varnames:\n",
" BN.node[node]['trace'] = trace.get_values(node)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda root]",
"language": "python",
"name": "conda-root-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.13"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
@rtbs-dev
Copy link
Author

Updated to use tabular look-up for pre-defined categorical composition nodes. Removed need for theano.tensor.switch() in most cases, using a shared numpy slice on the table instead. Runs much faster.

Still uses T.switch() for splitting the continuous node C3

@rtbs-dev
Copy link
Author

Added example of programmatically instantiating the PyMC3 random variable objects using NetworkX dicts. In theory, one could now "loop-over" an existing network and build up a pymc3 model to do inference.

@madHatter106
Copy link

This is really cool. Thanks!

@Nilavro
Copy link

Nilavro commented Sep 16, 2018

How do you make a query ? For example P(C3 |C2 = 12)

@dynaryu
Copy link

dynaryu commented Nov 13, 2018

I've got the following error message when I tried the Networkx with PyMC3:


TypeError Traceback (most recent call last)
in
8 BN.node['D2']['dist_obj'] = pm.Categorical('D2',p=BN.node['D2']['prob'])
9
---> 10 BN.node['C1']['dist_obj'] = pm.Normal('C1', mu=10+4*gpm(BN,'C1'),
11 tau = (1./2)*2)
12 BN.node['C2']['dist_obj'] = pm.Normal('C2', mu=6+2
(gpm(BN,'C2'))**2,

in gpm(BN, node, num)
1 # utily to quickly access the parent nodes' pymc3 objects
2 def gpm(BN, node, num=0):
----> 3 return BN.node[BN.predecessors(node)[num]]['dist_obj']
4
5 with pm.Model() as mod2:

TypeError: 'dict_keyiterator' object is not subscriptable

I'm currently using networkx 2.2, pymc3 3.5, and python 3.5 on OS X

@Fangwq
Copy link

Fangwq commented Jan 2, 2019

I got the following error message:

Traceback (most recent call last):
File "./pmml_test.py", line 126, in
BN.node['C1']['dist_obj'] = pm.Normal('C1', mu=10+4*gpm(BN,'C1'),tau = (1./2)**2)
File "./pmml_test.py", line 118, in gpm
return BN.node[BN.predecessors(node)[num]]['dist_obj']
TypeError: 'dictionary-keyiterator' object has no attribute 'getitem'

I'm currently using networkx 2.2, pymc3 3.5, and python 2.7 on OS X. Can you help me?

@DanielaLaura
Copy link

I got the following error message:

Traceback (most recent call last):
File "./pmml_test.py", line 126, in
BN.node['C1']['dist_obj'] = pm.Normal('C1', mu=10+4*gpm(BN,'C1'),tau = (1./2)**2)
File "./pmml_test.py", line 118, in gpm
return BN.node[BN.predecessors(node)[num]]['dist_obj']
TypeError: 'dictionary-keyiterator' object has no attribute 'getitem'

I'm currently using networkx 2.2, pymc3 3.5, and python 2.7 on OS X. Can you help me?

Here, he is using network 1.x. Here is the Migration guide :https://networkx.github.io/documentation/stable/release/migration_guide_from_1.x_to_2.0.html

In :
"# utily to quickly access the parent nodes' pymc3 objects
def gpm(BN, node, num=0):
return BN.node[BN.predecessors(node)[num]]['dist_obj'] "
you have to change BN.predecessors(node) to list(BN.predecessors(node)).

That is why you might get that keyiterator error.

Edit: aslo, you might want to change BN.node to BN.nodes
Hope it helps!

@DanielaLaura
Copy link

I've got the following error message when I tried the Networkx with PyMC3:

TypeError Traceback (most recent call last)
in
8 BN.node['D2']['dist_obj'] = pm.Categorical('D2',p=BN.node['D2']['prob'])
9
---> 10 BN.node['C1']['dist_obj'] = pm.Normal('C1', mu=10+4gpm(BN,'C1'),
11 tau = (1./2)
2) 12 BN.node['C2']['dist_obj'] = pm.Normal('C2', mu=6+2(gpm(BN,'C2'))**2,

in gpm(BN, node, num)
1 # utily to quickly access the parent nodes' pymc3 objects
2 def gpm(BN, node, num=0):
----> 3 return BN.node[BN.predecessors(node)[num]]['dist_obj']
4
5 with pm.Model() as mod2:

TypeError: 'dict_keyiterator' object is not subscriptable

I'm currently using networkx 2.2, pymc3 3.5, and python 3.5 on OS X

Here, he is using network 1.x. Here is the Migration guide :https://networkx.github.io/documentation/stable/release/migration_guide_from_1.x_to_2.0.html

In :
"# utily to quickly access the parent nodes' pymc3 objects
def gpm(BN, node, num=0):
return BN.node[BN.predecessors(node)[num]]['dist_obj'] "
you have to change BN.predecessors(node) to list(BN.predecessors(node)).

That is why you might get that keyiterator error.

Edit: aslo, you might want to change BN.node to BN.nodes
Hope it helps!

@tomkovna
Copy link

tomkovna commented Jan 7, 2019

How do you make a query such as: P(C1_a<C1<C1_b | C3_a<C3<C3_b, D4 = 1)?

@13charliebrown
Copy link

I am getting the following error:

Traceback (most recent call last):

File "", line 30, in
BN.edge['C3']['D4']['bin']], observed=BN.node['D4']['observe'])

File "C:\Users\Andrea\Anaconda3\lib\site-packages\theano\tensor\var.py", line 544, in getitem
theano.tensor.subtensor.Subtensor.convert(arg)

File "C:\Users\Andrea\Anaconda3\lib\site-packages\theano\tensor\subtensor.py", line 354, in convert
raise TypeError("Expected an integer")

TypeError: Expected an integer

Any help, please? Thanks!

@Fangwq
Copy link

Fangwq commented Mar 7, 2019

I get the same error with pymc3 3.6 and python3.

Traceback (most recent call last):
File "pmml_test.py", line 147, in
[gpm(BN,'D4', num=1),BN.adj['C3']['D4']['bin']], observed=BN.node['D4']['observe'])
File "/Users/fangwq/Library/Python/3.6/lib/python/site-packages/theano/tensor/var.py", line 544, in getitem
theano.tensor.subtensor.Subtensor.convert(arg)
File "/Users/fangwq/Library/Python/3.6/lib/python/site-packages/theano/tensor/subtensor.py", line 354, in convert
raise TypeError("Expected an integer")
TypeError: Expected an integer

Any help, please? Thanks!

@NelisW
Copy link

NelisW commented Jul 1, 2019

Thanks to all above!
I have about four hours experience in pymc3, so the above comments are much appreciated.

Using networkx 2.3 and pyMC3 3.7, cpu on Windows.
Fixed the dict_keyiterator problem.

    32     BN.edge['C3']['D4']['bin'] = T.switch(T.lt(gpm(BN,'D4'),9), 0, 
---> 33                                           T.switch(T.gt(gpm(BN,'D4'), 9) & T.lt(gpm(BN,'D4'),11), 1, 2))

AttributeError: 'DiGraph' object has no attribute 'edge'

When print(BN.__dict__) I see no edge attribute.
The edges seem to be embedded in _adj, _pred and _succ.

BN = nx.DiGraph()
BN.add_node('D1', dtype='Discrete', prob=d1_prob, pos=(2, 4))
BN.add_node('D2', dtype='Discrete', prob=d2_prob, pos=(4, 4))
BN.add_node('C1', dtype='Continuous', mu=c1_mu, sd=c1_sd, pos=(1,3))
BN.add_edge('D1', 'C1')
print(BN.__dict__)
-----------------------------------------------
{
'graph_attr_dict_factory': <class 'dict'>, 'node_dict_factory': <class 'dict'>, 
'node_attr_dict_factory': <class 'dict'>, 'adjlist_outer_dict_factory': <class 'dict'>, 
'adjlist_inner_dict_factory': <class 'dict'>, 'edge_attr_dict_factory': <class 'dict'>, 
'graph': {}, 
'_node': {
  'D1': {'dtype': 'Discrete', 'prob': array([0.3, 0.7]), 'pos': (2, 4)}, 
  'D2': {'dtype': 'Discrete', 'prob': array([0.6, 0.3, 0.1]), 'pos': (4, 4)}, 
  'C1': {'dtype': 'Continuous', 'mu': array([10, 14]), 'sd': array([2, 2]), 'pos': (1, 3)}
  }, 
'_adj': {'D1': {'C1': {}}, 'D2': {}, 'C1': {}},
'_pred': {'D1': {}, 'D2': {}, 'C1': {'D1': {}}}, 
'_succ': {'D1': {'C1': {}}, 'D2': {}, 'C1': {}}
}

D1 is a predecessor for C1.
C1 is a successor for D1.
But C1 is also adjacent to D1?

My bigger issue is what to do with the error on line 32/33 above.

I have no idea how to handle this. Any help will be appreciated!

@rtbs-dev
Copy link
Author

rtbs-dev commented Jul 1, 2019

Wow, I had no idea there were comments here! Thanks to all for checking out the example. For those of you with issues/ideas (especially networkx v2 problems), check out the repository that automates a lot of the underlying mechanical/boilerplate code in this example. This notebook was really just a proof-of-concept for that repository.

I haven't gone back to the code for a while, but if there's interest I would be happy to update things to newer pymc3 features. Please see if your above issues persist in the more mature repository. Thanks!

@NelisW
Copy link

NelisW commented Jul 1, 2019 via email

@rtbs-dev
Copy link
Author

rtbs-dev commented Jul 1, 2019

@NelisW certainly, and like I said, feel free to open an issue if something works unexpectedly on that repo (as I said, it's been a while).

@eHonnef
Copy link

eHonnef commented Nov 22, 2019

If you are having issues with BN.edges['C3']['D4']['bin'], substitute for BN.edges['C3','D4']['bin'].

As described in the migration guide mentioned before

G.edge have been removed in favor of using G.nodes[n] and G.edges[u, v]

@rezaaskary
Copy link

Do you have any example for dynamic BN simulated on PYMC3?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment