Example usage for org.apache.commons.math3.distribution MixtureMultivariateNormalDistribution MixtureMultivariateNormalDistribution

List of usage examples for org.apache.commons.math3.distribution MixtureMultivariateNormalDistribution MixtureMultivariateNormalDistribution

Introduction

In this page you can find the example usage for org.apache.commons.math3.distribution MixtureMultivariateNormalDistribution MixtureMultivariateNormalDistribution.

Prototype

public MixtureMultivariateNormalDistribution(List<Pair<Double, MultivariateNormalDistribution>> components) 

Source Link

Document

Creates a mixture model from a list of distributions and their associated weights.

Usage

From source file:sly.speakrecognizer.test.math.MultivariateNormalMixtureExpectationMaximizationFitterTest.java

@Test(expected = DimensionMismatchException.class)
public void testIncompatibleIntialMixture() {
    // Data has 3 columns
    double[][] data = new double[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
    double[] weights = new double[] { 0.5, 0.5 };

    // These distributions are compatible with 2-column data, not 3-column
    // data//w ww  .  j ava2 s  .  c om
    MultivariateNormalDistribution[] mvns = new MultivariateNormalDistribution[2];

    mvns[0] = new MultivariateNormalDistribution(new double[] { -0.0021722935000328823, 3.5432892936887908 },
            new double[][] { { 4.537422569229048, 3.5266152281729304 },
                    { 3.5266152281729304, 6.175448814169779 } });
    mvns[1] = new MultivariateNormalDistribution(new double[] { 5.090902706507635, 8.68540656355283 },
            new double[][] { { 2.886778573963039, 1.5257474543463154 },
                    { 1.5257474543463154, 3.3794567673616918 } });

    // Create components and mixture
    List<Pair<Double, MultivariateNormalDistribution>> components = new ArrayList<Pair<Double, MultivariateNormalDistribution>>();
    components.add(new Pair<Double, MultivariateNormalDistribution>(weights[0], mvns[0]));
    components.add(new Pair<Double, MultivariateNormalDistribution>(weights[1], mvns[1]));

    MixtureMultivariateNormalDistribution badInitialMix = new MixtureMultivariateNormalDistribution(components);

    MultivariateNormalMixtureExpectationMaximization fitter = new MultivariateNormalMixtureExpectationMaximization(
            data);

    fitter.fit(badInitialMix);
}