libmef – A library for mixtures of exponential families

Table of Contents


libmef is a C library allowing to manipulate, learn, simplify and compare mixtures of exponential families. It is designed to ease the use of various exponential families in mixture models.

See also jMEF for a Java implementation of the same kind of library and pyMEF for a Python version.

The C implementation allows to easily binds the library to other languages and thus to put mixtures of exponential families into your application.

What are exponential families?

An exponential family is a generic set of probability distributions that admit the following canonical distribution:

\[ p_F(x; \theta) = \exp \left( \langle t(x) | \theta \rangle - F(\theta) + k(x) \right) \]

Exponential families are characterized by the log normalizer function F, and include the following well-known distributions: Gaussian (generic, isotropic Gaussian, diagonal Gaussian, rectified Gaussian or Wald distributions, lognormal), Poisson, Bernoulli, binomial, multinomial, Laplacian, Gamma (incl. chi-squared), Beta, exponential, Wishart, Dirichlet, Rayleigh, probability simplex, negative binomial distribution, Weibull, von Mises, Pareto distributions, skew logistic, etc.

Mixtures of exponential families provide a generic framework for handling Gaussian mixture models (GMMs also called MoGs for mixture of Gaussians), mixture of Poisson distributions, and Laplacian mixture models as well.



  • Bregman Soft Clustering
  • Bregman Hard Clustering (soon)
  • Kernel Density Estimator (soon)
  • \(k\)-MLE
  • \(k\)-MLE for Gamma mixtures
  • \(k\)-MLE for generalized Gaussian mixtures
  • Gaussian EM
  • Gamma EM


  • Univariate Gaussian
  • Gamma
  • Generalized Gaussian

Do not hesitate to contribute with your own family (tutorial to come)


See the examples/ sub-directory inside the sources or browse online at



Darcs repository


You will need cmake and the GNU Scientific Library in order to compile libmef.

cmake .
cd examples; make # for the examples


  • Olivier Schwander and Frank Nielsen, Fast learning of Gamma mixture models with k-MLE, SIMBAD 2013
  • Olivier Schwander, Frank Nielsen, AurĂ©lien Schutz and Yannick Berthoumieu, k-MLE for mixtures of generalized Gaussians, , ICPR 2012
  • Olivier Schwander and Frank Nielsen, Learning Mixtures by Simplifying Kernel Density Estimators, in Matrix Information Geometry, Springer, 2012
  • Olivier Schwander and Frank Nielsen, pyMEF - A framework for Exponential Families in Python, in Proceedings of the 2011 IEEE Workshop on Statistical Signal Processing
  • Vincent Garcia, Frank Nielsen, and Richard Nock, Levels of details for Gaussian mixture models, in Proceedings of the Asian Conference on Computer Vision, Xi'an, China, September 2009
  • Frank Nielsen and Vincent Garcia, Statistical exponential families: A digest with flash cards, arXiV,, November 2009
  • Frank Nielsen and Richard Nock, Sided and symmetrized Bregman centroids, in IEEE Transactions on Information Theory, 2009, 55, 2048-2059
  • Frank Nielsen, Jean-Daniel Boissonnat and Richard Nock, On Bregman Voronoi diagrams, in ACM-SIAM Symposium on Data Mining, 2007, 746-755
  • A. Banerjee, S. Merugu, I. Dhillon, and J. Ghosh, Clustering with Bregman divergences, in Journal of Machine Learning Research, 2005, 6, 234-245


Please send any comment or bug report to Olivier Schwander.

Author: Olivier Schwander

Created: 2013-07-05 ven. 13:12

Emacs 24.3.1 (Org mode 8.0.3)

Validate XHTML 1.0