public static void main(String[] args) { final double[][] data = RandomData.getRandomDoubleArray(10000, 64, -1d, 1d); final GaussianMixtureModelEM gmmem = new GaussianMixtureModelEM(512, CovarianceType.Diagonal); final MixtureOfGaussians model = gmmem.estimate(data); System.out.println(MatrixUtils.toString(model.gaussians[0].getCovariance())); System.out.println(); System.out.println(MatrixUtils.toString(model.gaussians[1].getCovariance())); } }
public static void main(String[] args) { final double[][] data = RandomData.getRandomDoubleArray(10000, 64, -1d, 1d); final GaussianMixtureModelEM gmmem = new GaussianMixtureModelEM(512, CovarianceType.Diagonal); final MixtureOfGaussians model = gmmem.estimate(data); System.out.println(MatrixUtils.toString(model.gaussians[0].getCovariance())); System.out.println(); System.out.println(MatrixUtils.toString(model.gaussians[1].getCovariance())); } }
final double var = gauss.getCovariance(j, j); final double diff = (xp[j] - mean[j]) / Math.sqrt(var);
final double var = gauss.getCovariance(j, j); final double diff = (xp[j] - mean[j]) / Math.sqrt(var);
/** * Construct an ellipse that encompasses the shape of a * {@link CachingMultivariateGaussian}. * * @param gaussian * the {@link CachingMultivariateGaussian} * @param scale * the relative size of the ellipse * @return the ellipse */ public static Ellipse ellipseFromGaussian(MultivariateGaussian gaussian, float scale) { final Matrix mean = gaussian.getMean(); final float x = (float) mean.get(0, 0); final float y = (float) mean.get(0, 1); final Matrix covar = gaussian.getCovariance(); return ellipseFromCovariance(x, y, covar, scale); } }
@Override public double compare(MultivariateGaussian o1, MultivariateGaussian o2) { final Matrix sig0 = o1.getCovariance(); final Matrix sig1 = o2.getCovariance(); final Matrix mu0 = o1.getMean(); final Matrix mu1 = o2.getMean(); final int K = o1.numDims(); final Matrix sig1inv = sig1.inverse(); final double sigtrace = MatrixUtils.trace(sig1inv.times(sig0)); final Matrix mudiff = mu1.minus(mu0); final double xt_s_x = mudiff.transpose().times(sig1inv).times(mudiff).get(0, 0); final double ln_norm_sig = Math.log(sig0.norm1() / sig1.norm1()); return 0.5 * (sigtrace + xt_s_x - K - ln_norm_sig); }
final double y = mv[mv.length - 1] * h + (h / 2); final double xc = g.getCovariance(mv.length - 2, mv.length - 2); final double yc = g.getCovariance(mv.length - 1, mv.length - 1);
final double y = mv[mv.length - 1] * h + (h / 2); final double xc = g.getCovariance(mv.length - 2, mv.length - 2); final double yc = g.getCovariance(mv.length - 1, mv.length - 1);
for (int i = 0; i < nmix; i++) { final Matrix mu = gaussians[i].getMean(); final Matrix cv = gaussians[i].getCovariance();