JProGraM is an open-source Java library which can be used for learning a number of statistical models from data, such as Bayesian networks, Markov random fields, hybrid random fields, probabilistic decision trees, dependency networks, Gaussian mixture models, Parzen windows, and Nadaraya-Watson conditional density estimators. Along with learning algorithms, some simple inference methods are also implemented. JProGraM is released under the GNU General Public License. It is not yet as polished as I would like it to be, and there is no proper documentation, but it should be especially useful for research purposes. One strong point of the library is the extended support for graphical models with continuous random variables, covering not only standard Gaussian models, but also more recent cutting-edge techniques such as nonparanormal estimation of undirected graphs, scalable dual-tree recursion methods for kernel bandwidth selection (as described e.g. here), or kernel-based random fields. On the other hand, you can use JProGraM to estimate various random network models, such as Erdős-Rényi, Watts-Strogatz, Barabási-Albert model, Markov/higher-order exponential random graphs, and Fiedler random graphs and fields, as well as to sample subgraphs from large-scale networks (through random walk, snowball sampling, ...) or compute graph spectra. As additional tools for data analysis, principal components analysis, independent component analysis (through the FastICA library), and (to some extent) data clustering are also supported. Starting with release 12.8, a basic implementation of multilayer feed-forward neural networks has been added, using the backpropagation learning algorithm.
The JProGraM project is also hosted at SourceForge.net. If you would like to contribute to the development, please contact me. The latest release of JProGraM can be downloaded from here (as a gzipped tar archive). For convenience, the tarball also includes some other open-source libraries that are called within JProGraM, either as source-code or as jar archives to be included in your classpath. In particular, along with JProGraM you're going to download WEKA, JGraphT, JAMA, the L-BFGS implementation provided by the RISO project, FastICA, SSJ, and EJML. The L-BFGS method is called by JProGraM using a wrapper written by Jacob Eisenstein. Note that using the Gaussian and nonparanormal Markov random fields relying on the graphical lasso technique requires a working R distribution to be installed on your system, including in particular the glasso package. Provided that R and the glasso package are correctly installed, the relevant JProGraM routines are able to exploit the R installation without any manual intervention. This means that users of the JProGraM library can simply call the routines executing the graphical lasso within their Java code without the need to manipulate any R code. (This has been tested successfully on several Linux distributions, but not on Windows or Mac OS X).
For more information concerning the models and algorithms implemented by JProGraM, you can have a look at some of my papers. If you want to refer to JProGraM in a publication, please link to this website (or cite one of my papers).