@Override public AssignCluster<double[]> copy() { return new AssignGmm_F64(this); }
@Override public AssignCluster<double[]> copy() { return new AssignGmm_F64(this); }
@Override public AssignCluster<double[]> getAssignment() { return new AssignGmm_F64(mixture.toList()); }
@Override public AssignCluster<double[]> getAssignment() { return new AssignGmm_F64(mixture.toList()); }
@Test public void assign() { List<GaussianGmm_F64> clusters = new ArrayList<GaussianGmm_F64>(); clusters.add( createGaussian(2,1)); clusters.add( createGaussian(10,2) ); AssignGmm_F64 alg = new AssignGmm_F64(clusters); assertEquals(0, alg.assign(new double[]{3})); assertEquals(1, alg.assign(new double[]{9})); }
@Test public void assign_soft() { List<GaussianGmm_F64> clusters = new ArrayList<GaussianGmm_F64>(); clusters.add(createGaussian(2, 1)); clusters.add(createGaussian(4, 1)); AssignGmm_F64 alg = new AssignGmm_F64(clusters); double[] fit = new double[2]; alg.assign(new double[]{3}, fit); assertEquals(0.5, fit[0], 1e-8); assertEquals(0.5, fit[1], 1e-8); alg.assign(new double[]{3.5}, fit); assertTrue(fit[0] < fit[1]); }
@Test public void copy() { List<GaussianGmm_F64> clusters = new ArrayList<GaussianGmm_F64>(); clusters.add(createGaussian(2, 1)); clusters.add(createGaussian(10, 2)); AssignGmm_F64 original = new AssignGmm_F64(clusters); AssignGmm_F64 copy = (AssignGmm_F64)original.copy(); assertEquals(original.getNumberOfClusters(),copy.getNumberOfClusters()); for (int i = 0; i < original.getNumberOfClusters(); i++) { GaussianGmm_F64 o = original.mixture.get(i); GaussianGmm_F64 c = copy.mixture.get(i); assertTrue(o!=c); assertTrue(MatrixFeatures_DDRM.isIdentical(o.mean,c.mean,1e-8)); assertTrue(MatrixFeatures_DDRM.isIdentical(o.covariance,c.covariance,1e-8)); assertTrue(o.weight == c.weight); } }