pyMEF is a Python framework 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 libmef for a faster C implementation.
An exponential family is a generic set of probability distributions that admit the following canonical distribution:
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.
A generic tutorial on the exponential families and the simplification of mixture models have been made during the workshop Matrix Information Geometries.
More pyMEF specific tutorials are available here:
pyMEF.MixtureModel(size, efclass, efparam) | |
pyMEF.Build.KDE(data, efclass, efparam[, ...]) | Kernel density estimation (only for Gaussian kernels) |
pyMEF.Build.BregmanSoftClustering(data, k, ...) | |
pyMEF.Simplify.BregmanHardClustering(mixture, k) | |
pyMEF.Compare.EMD | |
pyMEF.Compare.KullbackLeibler([count]) |
Currently, there is no official release of pyMEF, but you can have a look at the public darcs repository.
Please send any comment or bug report to Olivier Schwander or Frank Nielsen.