API Documentation¶
Gaussian Proposal¶
-
class
gmmmc.proposals.gaussian_proposals.
GaussianStepCovarProposal
(step_sizes=(0.001, ))[source]¶ Bases:
gmmmc.proposals.proposals.Proposal
Methods
get_acceptance
()Calculate and return the acceptance rate of the proposal. get_illegal
()Calculate and return the illegal proposal rate of this proposal. propose
(X, gmm, target[, n_jobs])Propose a new set of GMM covariances (diagonal only). -
propose
(X, gmm, target, n_jobs=1)[source]¶ Propose a new set of GMM covariances (diagonal only).
Parameters: X : 2-D array like of shape (n_samples, n_features)
The observed data or evidence.
gmm : GMM object
The current state (set of gmm parameters) in the Markov Chain
target : GMMPosteriorTarget object
The target distribution to be found.
n_jobs : int
Number of cpu cores to use in the calculation of log probabilities.
Returns: : GMM
A new GMM object initialised with new covariance parameters.
-
-
class
gmmmc.proposals.gaussian_proposals.
GaussianStepMeansProposal
(step_sizes=(0.001, ))[source]¶ Bases:
gmmmc.proposals.proposals.Proposal
Gaussian Proposal distribution for means of a GMM
Methods
get_acceptance
()Calculate and return the acceptance rate of the proposal. get_illegal
()Calculate and return the illegal proposal rate of this proposal. propose
(X, gmm, target[, n_jobs])Propose a new set of GMM means. -
propose
(X, gmm, target, n_jobs=1)[source]¶ Propose a new set of GMM means.
Parameters: X : 2-D array like of shape (n_samples, n_features)
The observed data or evidence.
gmm : GMM object
The current state (set of gmm parameters) in the Markov Chain
target : GMMPosteriorTarget object
The target distribution to be found.
n_jobs : int
Number of cpu cores to use in the calculation of log probabilities.
Returns: : GMM
A new GMM object initialised with new mean parameters.
-
-
class
gmmmc.proposals.gaussian_proposals.
GaussianStepWeightsProposal
(n_mixtures, step_sizes=(0.001, ))[source]¶ Bases:
gmmmc.proposals.proposals.Proposal
Methods
get_acceptance
()Calculate and return the acceptance rate of the proposal. get_illegal
()Calculate and return the illegal proposal rate of this proposal. invTransformSimplex
(simplex_coords)Transforms a point on the simplex to the original vector space. propose
(X, gmm, target[, n_jobs])Propose a new set of weight vectors. transformSimplex
(weights)Project weight vector onto the normal simplex. -
invTransformSimplex
(simplex_coords)[source]¶ Transforms a point on the simplex to the original vector space.
Parameters: simplex_coords : array_like of shape (n_mixtures - 1,)
Coordinates of a weight vector on the simplex.
Returns: : array_like of shape(n_mixtures,)
vector of weights.
-
propose
(X, gmm, target, n_jobs=1)[source]¶ Propose a new set of weight vectors. Parameters ———- X : 2-D array like of shape (n_samples, n_features)
The observed data or evidence.- gmm : GMM object
- The current state (set of gmm parameters) in the Markov Chain
- target : GMMPosteriorTarget object
- The target distribution to be found.
- n_jobs : int
- Number of cpu cores to use in the calculation of log probabilities.
: GMM A new GMM object initialised with new covariance parameters.
-
Generic Proposals¶
-
class
gmmmc.proposals.proposals.
GMMBlockMetropolisProposal
(propose_mean=None, propose_covars=None, propose_weights=None, propose_iterations=1)[source]¶ Bases:
gmmmc.proposals.proposals.Proposal
Methods
get_acceptance
()Calculate and return the acceptance rate of the proposal. get_illegal
()Calculate and return the illegal proposal rate of this proposal. propose
(X, gmm, target[, n_jobs])Propose a new set of gmm parameters. -
propose
(X, gmm, target, n_jobs=1)[source]¶ Propose a new set of gmm parameters. Calls each proposal function one after another.
Parameters: X : 2-D array_like of shape (n_samples, n_features)
Feature vectors
gmm : GMM object
Current GMM parameters in the markov chain
target : GMMPosteriorTarget object
Target distribution
n_jobs : int
Number of cpus to use. -1 to use all available cores.
Returns: : GMM Object
The next state in the Markov Chain.
-
-
class
gmmmc.proposals.proposals.
Proposal
[source]¶ Bases:
object
Methods
get_acceptance
()Calculate and return the acceptance rate of the proposal. get_illegal
()Calculate and return the illegal proposal rate of this proposal. propose
(X, gmm, target[, n_jobs])Parameters: -
get_acceptance
()[source]¶ Calculate and return the acceptance rate of the proposal.
Returns: : double
The acceptance rate of the proposal function
-
Priors¶
-
class
gmmmc.priors.prior.
CovarsStaticPrior
(prior_covars)[source]¶ Bases:
gmmmc.priors.prior.GMMParameterPrior
Methods
log_prob
(covariances)Log probability of a covariance given we know what its true value ‘should’ be. log_prob_single
(covariance, mixture_num)Log probability of a covariance matrix of a single mixture given we know what its true value should be. sample
()-
log_prob
(covariances)[source]¶ Log probability of a covariance given we know what its true value ‘should’ be.
Parameters: covariances : covariance matrices of GMM distribution
Returns: : double
0 if covariances are identical to their true values, -inf otherwise.
-
log_prob_single
(covariance, mixture_num)[source]¶ Log probability of a covariance matrix of a single mixture given we know what its true value should be.
Parameters: covariance : 1-D array_like of shape (n_features)
covariance matrix for a specific mixture in GMM
mixture_num : int
Index of mixture in GMM
Returns: : double
0 if covariance is identical to its true value, -inf otherwise
-
-
class
gmmmc.priors.prior.
DiagCovarsUniformPrior
(low, high, n_mixtures, n_features)[source]¶ Bases:
gmmmc.priors.prior.GMMParameterPrior
Methods
log_prob
(covars)Compute the log prior probability of the covariances of a GMM. log_prob_single
(covar, mixture_num)Compute the log probability of the covariances for a specific mixture. sample
()Draw a sample for the diagonals of a covariance matrix assuming a uniform prior over each individual element. -
log_prob
(covars)[source]¶ Compute the log prior probability of the covariances of a GMM. Since this will be used for monte carlo simulations, we care only that it is proportional to the true probability. For a uniform distribution we can use any value.
Parameters: covars : 2-D array_like, of shape (n_mixtures, n_features)
covariance vectors for the GMM
Returns: : double
Proportional to the log probability of the covariance of the GMM. 0.0 if the means are within the bounds of the uniform prior, -inf otherwise.eans
-
log_prob_single
(covar, mixture_num)[source]¶ Compute the log probability of the covariances for a specific mixture.
Parameters: covar : 1-D array_like of length n_features
Single diagonal covariance from a single mixture of the GMM.
mixture_num : int
Index of the mixture for the covariance matrix.
Returns: double
Proportional to the log prior probability for the covariance. 0.0 if the means are wimeansthin the bounds of the uniform prior, -inf otherwise.
-
-
class
gmmmc.priors.prior.
GMMParameterPrior
[source]¶ Methods
log_prob
(params)Calculate the log prior probability. log_prob_single
(param, mixture_num)Compute log probability of a single set of parameters (mean/covariance/weight) vector -
log_prob
(params)[source]¶ Calculate the log prior probability.
Parameters: params : array_like of varying shape
parameters for a GMM e.g means weights covariances
Returns: : double
log prior probability of the parameters
-
log_prob_single
(param, mixture_num)[source]¶ Compute log probability of a single set of parameters (mean/covariance/weight) vector
Parameters: param : 1-D array_like vector of parameters for a single mixture
mixture_num : Mixture index for the parameters.
Returns: : double
log prior probability of parameters
-
-
class
gmmmc.priors.prior.
GMMPrior
(means_prior, covars_prior, weights_prior)[source]¶ Methods
log_prob
(gmm)Parameters: sample
()Compute a sample from the prior distribution of the GMM’s parameters.
-
class
gmmmc.priors.prior.
MeansGaussianPrior
(prior_means, covariances)[source]¶ Bases:
gmmmc.priors.prior.GMMParameterPrior
Methods
log_prob
(means)Compute the log prior probability of the means of a GMM according to Gaussian priors. log_prob_single
(mean, mixture_num)Compute the log probability of the means for a specific mixture. sample
()Draw a sample from the Gaussian prior distributions of the mean vectors. -
log_prob
(means)[source]¶ Compute the log prior probability of the means of a GMM according to Gaussian priors.
Parameters: means : 2-D array_like, of shape (n_mixtures, n_features)
mean vectors for the GMM
Returns: : double
Proportional to the log probability of the means of the GMM
-
log_prob_single
(mean, mixture_num)[source]¶ Compute the log probability of the means for a specific mixture.
Parameters: mean : 1-D array_like of length n_features
Single mean vector from a single mixture of the GMM.
mixture_num : int
Index of the mixture for the mean.
Returns: : double
Proportional to the log prior probability for means
-
-
class
gmmmc.priors.prior.
MeansUniformPrior
(low, high, n_mixtures, n_features)[source]¶ Bases:
gmmmc.priors.prior.GMMParameterPrior
Methods
log_prob
(means)Compute the log prior probability of the means of a GMM. log_prob_single
(mean, mixture)Compute the log probability of the means for a specific mixture. sample
()-
log_prob
(means)[source]¶ Compute the log prior probability of the means of a GMM. Since this will be used for monte carlo simulations, we care only that it is proportional to the true probability. For a uniform distribution we can use any value.
Parameters: means : 2-D array_like, of shape (n_mixtures, n_features)
mean vectors for the GMM
Returns: : double
Proportional to the log probability of the means of the GMM. 0.0 if the means are within the bounds of the uniform prior, -inf otherwise.
-
log_prob_single
(mean, mixture)[source]¶ Compute the log probability of the means for a specific mixture.
Parameters: mean : 1-D array_like of length n_features
Single mean vector from a single mixture of the GMM.
mixture_num : int
Index of the mixture for the mean.
Returns: : double
Proportional to the log prior probability for means 0.0 if the means are within the bounds of the uniform prior, -inf otherwise.
-
-
class
gmmmc.priors.prior.
WeightsDirichletPrior
(alpha)[source]¶ Bases:
gmmmc.priors.prior.GMMParameterPrior
Methods
log_prob
(weights)Calculate log probability of weight vector according to dirichlet prior. log_prob_single
(weights, mixture_num)Identical to log_prob sample
()Sample from dirichlet distribution. -
log_prob
(weights)[source]¶ Calculate log probability of weight vector according to dirichlet prior.
Parameters: weights : 1-D array_like of shape (n_mixtures)
Returns: : double
log probability under distribution
-
-
class
gmmmc.priors.prior.
WeightsStaticPrior
(prior_weights)[source]¶ Bases:
gmmmc.priors.prior.GMMParameterPrior
Methods
log_prob
(weights)Returns a log probability assuming weights have a true fixed value. log_prob_single
(weights, mixture_num)Functionally the same as log_prob sample
()Sample true weight vector -
log_prob
(weights)[source]¶ Returns a log probability assuming weights have a true fixed value.
Parameters: weights : 1-D array_like of shape (n_mixtures)
Weight vector for mixture. Must lie on the normal simplex.
Returns: : double
0 if weights are close to true values, -inf otherwise
-
-
class
gmmmc.priors.prior.
WeightsUniformPrior
(n_mixtures)[source]¶ Bases:
gmmmc.priors.prior.GMMParameterPrior
Methods
log_prob
(weights)Returns a log probability according to uniform dirichlet prior. log_prob_single
(weights, mixture_num)Functionally the same as log_prob sample
()Draw sample from dirichlet distribution -
log_prob
(weights)[source]¶ Returns a log probability according to uniform dirichlet prior.
Parameters: weights : 1-D array_like of shape (n_mixtures)
Weight vector for mixture. Must lie on the normal simplex.
Returns: : double
log probability under uniform prior.
-
GMM Representation¶
-
class
gmmmc.gmm.
GMM
(means, covariances, weights)[source]¶ Attributes
covars
means
weights
Methods
log_likelihood
(X[, n_jobs])Calculate the average log likelihood of the data given the GMM parameters sample
(n_samples)Sample from the GMM. -
covars
¶
-
log_likelihood
(X, n_jobs=1)[source]¶ Calculate the average log likelihood of the data given the GMM parameters
Parameters: X : 2-D array_like of shape (n_samples, n_features)
Data to be used.
n_jobs : int
Number of CPU cores to use in the calculation
Returns: : float
average log likelihood of the data given the GMM parameters
Notes
For GMMs with small numbers of mixtures (<10) the use of more than 1 core can slow down the function.
-
means
¶
-
sample
(n_samples)[source]¶ Sample from the GMM.
Parameters: n_samples : int
Number of samples to draw.
Returns: : 2-D array_like of shape (n_samples, n_features)
Samples drawn from the GMM distribution
-
weights
¶
-
Monte Carlo Algorithms¶
-
class
gmmmc.monte_carlo.
AnnealedImportanceSampling
(proposal, priors, betas)[source]¶ Bases:
gmmmc.monte_carlo.MonteCarloBase
Methods
anneal
(X, n_jobs[, diagnostics])A single annealing run from AIS. sample
(X, n_samples[, n_jobs, diagnostics])Generate samples from the posterior distribution of the parameters. -
anneal
(X, n_jobs, diagnostics=None)[source]¶ A single annealing run from AIS.
Parameters: X : 2-D array_like of shape (n_feature_vectors, n_features)
Feature vectors used as the data for the underlying model.
n_jobs : int
Number of cpu cores to utilise during the Monte Carlo simulation.
diagnostics : empty dictionary, optional
If included, the dictionary passed to the function will contain diagnostic information from each annealing run of AIS. TODO: expand on this
Returns: : tuple (GMM Object, double)
A single GMM sample from AIS and its corresponding weight.
-
sample
(X, n_samples, n_jobs=1, diagnostics=None)[source]¶ Generate samples from the posterior distribution of the parameters.
Parameters: X : 2-D array_like of shape (n_feature_vectors, n_features)
Feature vectors used as the data for the underlying model.
n_samples : int
Number of Monte Carlo samples to be drawn from the posterior distribution.
n_jobs : int
Number of cpu cores to utilise during the Monte Carlo simulation.
diagnostics : empty dictionary, optional
If included, the dictionary passed to the function will contain diagnostic information from each annealing run of AIS. TODO: expand on this
Returns: : list of tuples (GMM, double)
A list of GMM samples with their corresponding weight.
-
-
class
gmmmc.monte_carlo.
MarkovChain
(proposal, prior, initial_gmm)[source]¶ Bases:
gmmmc.monte_carlo.MonteCarloBase
Methods
sample
(X, n_samples[, n_jobs])Sample from the posterior distribution of the GMM parameters -
sample
(X, n_samples, n_jobs=1)[source]¶ Sample from the posterior distribution of the GMM parameters
Parameters: X : 2-D array_like of shape (n_feature_vectors, n_features)
Feature vectors used as the data for the underlying model.
n_samples : int
Number of Monte Carlo samples to be drawn from the posterior distribution.
n_jobs : int
Number of cpu cores to utilise during the Monte Carlo simulation.
Returns: samples : List of GMM Objects
Returns a list of GMMs (GMM parameters) which are the samples drawn from the distribution.
Notes
It is beneficial to discard a number of samples from the beginning of the chain (burn-in) as well as to use only every nth sample (lag) to reduce the correlation between succesive samples of the posterior.
-
Target Distributions¶
-
class
gmmmc.posterior.
GMMPosteriorTarget
(prior, beta=1)[source]¶ Posterior distribution (targets distribution)
Methods
log_prob
(X, gmm, n_jobs)Parameters: -
log_prob
(X, gmm, n_jobs)[source]¶ Parameters: X : 2-D array_like of shape (n_samples, n_features)
Feature vectors
gmm : GMM object
GMM parameters for the calculation of the prior probability
n_jobs : int
Number of cores to use in the calculation.
Returns : double
log probability of the posterior up to a constant factor.
——-
-