@Test public void testMixture3() { System.out.println("Mixture3"); double[] data = { 23.0, 23.0, 22.0, 22.0, 21.0, 24.0, 24.0, 24.0, 24.0, 24.0, 24.0, 24.0, 24.0, 22.0, 22.0, 16.0, 16.0, 16.0, 23.0, 23.0, 15.0, 21.0, 21.0, 21.0, 21.0, 24.0, 24.0, 21.0, 21.0, 24.0, 24.0, 24.0, 24.0, 1.0, 1.0, 23.0, 23.0, 22.0, 22.0, 14.0, 24.0, 24.0, 23.0, 23.0, 18.0, 18.0, 23.0, 23.0, 24.0, 24.0, 22.0, 22.0, 17.0, 17.0, 17.0, 21.0, 21.0, 15.0, 14.0 }; GaussianMixture mixture = GaussianMixture.fit(data); System.out.println(mixture); assertEquals(3, mixture.size()); }
public static GaussianMixture fit(int k, double[] x) { if (k < 2) throw new IllegalArgumentException("Invalid number of components in the mixture."); double min = MathEx.min(x); double max = MathEx.max(x); double step = (max - min) / (k+1); Component[] components = new Component[k]; for (int i = 0; i < k; i++) { components[i] = new Component(1.0/k, new GaussianDistribution(min+=step, step)); } ExponentialFamilyMixture model = fit(x, components); return new GaussianMixture(model.L, x.length, model.components); }
GaussianMixture extends ExponentialFamilyMixture { public static GaussianMixture fit(int k, double[] x) { if (k < 2) throw new IllegalArgumentException("Invalid number of components in the mixture."); double min = MathEx.min(x); double max = MathEx.max(x); double step = (max - min) / (k+1); Component[] components = new Component[k]; for (int i = 0; i < k; i++) { components[i] = new Component(1.0/k, new GaussianDistribution(min+=step, step)); } ExponentialFamilyMixture model = fit(x, components); return new GaussianMixture(model.L, x.length, model.components); } }
GaussianMixture extends ExponentialFamilyMixture { public static GaussianMixture fit(int k, double[] x) { if (k < 2) throw new IllegalArgumentException("Invalid number of components in the mixture."); double min = MathEx.min(x); double max = MathEx.max(x); double step = (max - min) / (k+1); Component[] components = new Component[k]; for (int i = 0; i < k; i++) { components[i] = new Component(1.0/k, new GaussianDistribution(min+=step, step)); } ExponentialFamilyMixture model = fit(x, components); return new GaussianMixture(model.L, x.length, model.components); } GaussianMixture(Component... components); private  GaussianMixture(double L, int n, Component... components); }
GaussianMixture extends ExponentialFamilyMixture { public static GaussianMixture fit(int k, double[] x) { if (k < 2) throw new IllegalArgumentException("Invalid number of components in the mixture."); double min = MathEx.min(x); double max = MathEx.max(x); double step = (max - min) / (k+1); Component[] components = new Component[k]; for (int i = 0; i < k; i++) { components[i] = new Component(1.0/k, new GaussianDistribution(min+=step, step)); } ExponentialFamilyMixture model = fit(x, components); return new GaussianMixture(model.L, x.length, model.components); } GaussianMixture(Component... components); private  GaussianMixture(double L, int n, Component... components); static GaussianMixture fit(int k, double[] x); @SuppressWarnings("unchecked") static GaussianMixture fit(double[] x); }
GaussianMixture extends ExponentialFamilyMixture { public static GaussianMixture fit(int k, double[] x) { if (k < 2) throw new IllegalArgumentException("Invalid number of components in the mixture."); double min = MathEx.min(x); double max = MathEx.max(x); double step = (max - min) / (k+1); Component[] components = new Component[k]; for (int i = 0; i < k; i++) { components[i] = new Component(1.0/k, new GaussianDistribution(min+=step, step)); } ExponentialFamilyMixture model = fit(x, components); return new GaussianMixture(model.L, x.length, model.components); } GaussianMixture(Component... components); private  GaussianMixture(double L, int n, Component... components); static GaussianMixture fit(int k, double[] x); @SuppressWarnings("unchecked") static GaussianMixture fit(double[] x);  }