/** * <p> * High level interface for creating GMM cluster. If more flexibility is needed (e.g. custom seeds) * then create and instance of {@link ExpectationMaximizationGmm_F64} directly * </p> * * <p>WARNING: DEVELOPMENTAL AND IS LIKELY TO FAIL HORRIBLY</p> * * @param maxIterations Maximum number of iterations it will perform. * @param maxConverge Maximum iterations allowed before convergence. Re-seeded if it doesn't converge. * @param convergeTol Distance based convergence tolerance. Try 1e-8 * @return ExpectationMaximizationGmm_F64 */ public static ExpectationMaximizationGmm_F64 gaussianMixtureModelEM_F64( int maxIterations, int maxConverge , double convergeTol) { StandardKMeans_F64 kmeans = kMeans_F64(null,maxIterations,maxConverge,convergeTol); SeedFromKMeans_F64 seeds = new SeedFromKMeans_F64(kmeans); return new ExpectationMaximizationGmm_F64(maxIterations,convergeTol,seeds); }
SeedFromKMeans_F64 alg = new SeedFromKMeans_F64(createKMeans()); alg.init(2,234234); seeds.add( new GaussianGmm_F64(2)); alg.selectSeeds(points,seeds);
/** * <p> * High level interface for creating GMM cluster. If more flexibility is needed (e.g. custom seeds) * then create and instance of {@link ExpectationMaximizationGmm_F64} directly * </p> * * <p>WARNING: DEVELOPMENTAL AND IS LIKELY TO FAIL HORRIBLY</p> * * @param maxIterations Maximum number of iterations it will perform. * @param maxConverge Maximum iterations allowed before convergence. Re-seeded if it doesn't converge. * @param convergeTol Distance based convergence tolerance. Try 1e-8 * @return ExpectationMaximizationGmm_F64 */ public static ExpectationMaximizationGmm_F64 gaussianMixtureModelEM_F64( int maxIterations, int maxConverge , double convergeTol) { StandardKMeans_F64 kmeans = kMeans_F64(null,maxIterations,maxConverge,convergeTol); SeedFromKMeans_F64 seeds = new SeedFromKMeans_F64(kmeans); return new ExpectationMaximizationGmm_F64(maxIterations,convergeTol,seeds); }
@Override public ComputeClusters<double[]> createClustersAlg( boolean hint ) { if( hint ) { return new ExpectationMaximizationGmm_F64(1000, 1e-8, seeds); } else { InitializeStandard_F64 kseeds = new InitializeStandard_F64(); StandardKMeans_F64 kmeans = new StandardKMeans_F64(1000,1000,1e-8,kseeds); SeedFromKMeans_F64 seeds = new SeedFromKMeans_F64(kmeans); return new ExpectationMaximizationGmm_F64(1000, 1e-8, seeds); } } }