As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened,
visit the help center for guidance.
Closed 7 years ago.
Hello fellow Number crunchers
As the headline suggests, I am looking for a library for learning and inference of Bayesian Networks. I have already found some, but I am hoping for a recommendation.
Requirements in a quick overview:
- preferably written in Java or Python
- configuration (also of the network itself) is a) possible and b) possible via code (and not solely via a GUI).
- source code available
- project is still maintained
- the more powerful, the better
Which one do you recommend ?
Have a look at Weka. It's kind of popular in my neck of the woods... It's open source and written in Java.
This will tell you about bayesian networks in Weka, from the abstract:
- Structure learning of Bayesian
networks using various hill climbing
(K2, B, etc) and general purpose
(simulated annealing, tabu search)
algorithms.
- Local score metrics
implemented; Bayes, BDe, MDL,
entropy, AIC.
- Global score metrics
implemented; leave one out cv, k-fold
cv and cumulative cv.
- Conditional
independence based causal recovery
algorithm available.
- Parameter
estimation using direct estimates and
Bayesian model averaging.
- GUI for
easy inspection of Bayesian networks.
So here I give my subjective answer.
From my experience everything related to statistics is best solved with R. I have seen this often that in fields related to statistics, R has the most libraries and very often the most state-of-the-art algorithms/methods implemented.
Most programmers like me like to stay with the languages that they know, and learning something new is a trade off, mainly because it's time consuming.
So if learning a new language is a viable option, R is a good choice, in my opinion the best.
Take a brief look at the R libraries related to Bayesian Networks and Bayesian Interference.
Baysian:
http://cran.r-project.org/web/views/Bayesian.html
Graphical Models:
http://cran.r-project.org/web/views/gR.html
Machine Learning:
http://cran.r-project.org/web/views/MachineLearning.html
The main advantages of R:
- easy to install a library: install.packages("RWeka")
- the help format and style is the same for all libraries
- if you know R, it's easy to switch from one library to the next. So it's easy to test all available libraries and then use the one that fits best
Never used it, but perhaps the MALLET library fits the bill?