Create Bayesian Network and learn parameters with Python3.x
Question: I'm searching for the most appropriate tool for python3.x on Windows to create
a Bayesian Network, learn its parameters from data and perform the inference.

The network structure I want to define myself as follows: ![enter image
description here](http://i.stack.imgur.com/iscKX.jpg)

It is taken from
[this](http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=6697180&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6697180)
paper.

All the variables are discrete (and can take only 2 possible states) except
"Size" and "GraspPose", which are continuous and should be modeled as Mixture
of Gaussians.

Authors use _Expectation-Maximization algorithm_ to learn the parameters for
conditional probability tables and _Junction-Tree algorithm_ to compute the
exact inference.

As I understand all is realised in MatLab with Bayes Net Toolbox by Murphy.

I tried to search something similar in python and here are my results:

  1. Python Bayesian Network Toolbox <http://sourceforge.net/projects/pbnt.berlios/> (<http://pbnt.berlios.de/>). Web-site doesn't work, project doesn't seem to be supported. 
  2. BayesPy <https://github.com/bayespy/bayespy> I think this is what I actually need, but I fail to find some examples similar to my case, to understand how to approach construction of the network structure.
  3. PyMC seems to be a powerful module, but I have problems with importing it on Windows 64, python 3.3. I get error when I install development version 

WARNING (theano.configdefaults): g++ not detected ! Theano will be unable to
execute optimized C-implementations (for both CPU and GPU) and will default to
Python implementations. Performance will be severely degraded. To remove this
warning, set Theano flags cxx to an empty string.

UPDATE:

  4. libpgm (<http://pythonhosted.org/libpgm/>). Exactly what I need, unfortunately not supported by python 3.x
  5. Very interesting actively developing library: PGMPY. Unfortunately continuous variables and learning from data is not supported yet. <https://github.com/pgmpy/pgmpy/>

Any advices and concrete examples will be highly appreciated.


Answer: It looks like [pomegranate](https://github.com/jmschrei/pomegranate) was
recently updated to include Bayesian Networks. I haven't tried it myself, but
the interface looks nice and sklearn-ish.

