/** * Use reference to provided mixtures */ public AssignGmm_F64(List<GaussianGmm_F64> mixture) { this.mixture = mixture; int N = mixture.get(0).mean.getNumElements(); glm = new GaussianLikelihoodManager(N,mixture); glm.precomputeAll(); }
@Override public void assign(double[] point, double[] fit) { double total = 0; for (int i = 0; i < mixture.size(); i++) { total += fit[i] = glm.getLikelihood(i).likelihood(point); } for (int i = 0; i < mixture.size(); i++) { fit[i] /= total; } }
mixtures.add(b); GaussianLikelihoodManager manager = new GaussianLikelihoodManager(DOF,mixtures.toList()); manager.precomputeAll(); double foundA = manager.getLikelihood(0).likelihood(p); double chiSqA = manager.getLikelihood(0).getChisq(); double foundB = manager.getLikelihood(1).likelihood(p); double chiSqB = manager.getLikelihood(1).getChisq();
likelihoodManager.precomputeAll(); likelihoodManager.precomputeAll();
@Override public void init(final int pointDimension, long randomSeed) { mixture = new FastQueue<GaussianGmm_F64>(GaussianGmm_F64.class,true ) { @Override protected GaussianGmm_F64 createInstance() { return new GaussianGmm_F64(pointDimension); } }; selectInitial.init(pointDimension,randomSeed); if( dx.length < pointDimension ) dx = new double[pointDimension]; likelihoodManager = new GaussianLikelihoodManager(pointDimension,mixture.toList()); }
likelihoodManager.precomputeAll(); likelihoodManager.precomputeAll();
@Override public void init(final int pointDimension, long randomSeed) { mixture = new FastQueue<GaussianGmm_F64>(GaussianGmm_F64.class,true ) { @Override protected GaussianGmm_F64 createInstance() { return new GaussianGmm_F64(pointDimension); } }; selectInitial.init(pointDimension,randomSeed); if( dx.length < pointDimension ) dx = new double[pointDimension]; likelihoodManager = new GaussianLikelihoodManager(pointDimension,mixture.toList()); }
/** * Use reference to provided mixtures */ public AssignGmm_F64(List<GaussianGmm_F64> mixture) { this.mixture = mixture; int N = mixture.get(0).mean.getNumElements(); glm = new GaussianLikelihoodManager(N,mixture); glm.precomputeAll(); }
@Override public void assign(double[] point, double[] fit) { double total = 0; for (int i = 0; i < mixture.size(); i++) { total += fit[i] = glm.getLikelihood(i).likelihood(point); } for (int i = 0; i < mixture.size(); i++) { fit[i] /= total; } }
alg.likelihoodManager.precomputeAll(); alg.expectation();
/** * Copy constructor */ public AssignGmm_F64( AssignGmm_F64 original ) { mixture = new ArrayList<GaussianGmm_F64>(); for (int i = 0; i < original.mixture.size(); i++) { GaussianGmm_F64 o = original.mixture.get(i); mixture.add(o.copy()); } int N = mixture.get(0).mean.getNumElements(); glm = new GaussianLikelihoodManager(N,mixture); glm.precomputeAll(); }
@Override public int assign(double[] point) { int indexBest = -1; double scoreBest = 0; for (int i = 0; i < mixture.size(); i++) { double score = glm.getLikelihood(i).likelihood(point); if( score > scoreBest ) { scoreBest = score; indexBest = i; } } return indexBest; }
/** * Copy constructor */ public AssignGmm_F64( AssignGmm_F64 original ) { mixture = new ArrayList<GaussianGmm_F64>(); for (int i = 0; i < original.mixture.size(); i++) { GaussianGmm_F64 o = original.mixture.get(i); mixture.add(o.copy()); } int N = mixture.get(0).mean.getNumElements(); glm = new GaussianLikelihoodManager(N,mixture); glm.precomputeAll(); }
@Override public int assign(double[] point) { int indexBest = -1; double scoreBest = 0; for (int i = 0; i < mixture.size(); i++) { double score = glm.getLikelihood(i).likelihood(point); if( score > scoreBest ) { scoreBest = score; indexBest = i; } } return indexBest; }
GaussianLikelihoodManager.Likelihood g = likelihoodManager.getLikelihood(j); double likelihood = g.likelihood(p.point); total += p.weights.data[j] = likelihood;
GaussianLikelihoodManager.Likelihood g = likelihoodManager.getLikelihood(j); double likelihood = g.likelihood(p.point); total += p.weights.data[j] = likelihood;