@Override public void computeStatistics() { computeMean(); computeStandardDeviation(); }
@Override public ModelMatcher<double[],Double> createModelMatcher(ModelManager<double[]> manager, DistanceFromModel<double[],Double> distance, ModelGenerator<double[],Double> generator, ModelFitter<double[],Double> fitter, int minPoints, double fitThreshold) { return new StatisticalDistanceModelMatcher<double[],Double>(5, 0, 0, 10000, minPoints, StatisticalDistance.PERCENTILE, 0.95, manager,fitter, distance, new ArrayCodec()); }
public TestStatisticalDistanceModelMatcher() { configure(0.9, 0.1, false); }
inliers.clear(); for( int i = 0; i < dataSet.size(); i++ ) pruneList.add( new PointIndex<Point>(dataSet.get(i),i)); inliers.clear(); errorAlg.init(modelError, pruneList); errorAlg.computeStatistics(); centerError = errorAlg.getErrorMetric(); converged = true; else if (computeDiff(currParam, param) <= minChange) { converged = true; errorAlg.prune(); oldCenter = centerError;
@Test public void metric_and_prune() { LinkedList<PointIndex<Double>> inliers = new LinkedList<PointIndex<Double>>(); for (int i = 0; i < 200; i++) { inliers.add(new PointIndex<Double>((double) i,i)); } // randomize the inputs Collections.shuffle(inliers, rand); FitByMedianStatistics<double[],Double> fit = new FitByMedianStatistics<double[],Double>(0.90); fit.init(new DistanceFromMeanModel(), inliers); fit.computeStatistics(); assertEquals(100, fit.getErrorMetric(), 1e-8); fit.prune(); assertEquals(180, inliers.size()); }
@Test public void metric_and_prune() { LinkedList<PointIndex<Double>> inliers = new LinkedList<PointIndex<Double>>(); for (int i = 0; i < 200; i++) { inliers.add(new PointIndex<Double>((double) i,i)); } // randomize the inputs Collections.shuffle(inliers,rand); FitByMeanStatistics<double[],Double> fit = new FitByMeanStatistics<double[],Double>(1); fit.init(new DistanceFromMeanModel(), inliers); fit.computeStatistics(); assertEquals(99.5, fit.getErrorMetric(), 1e-8); fit.prune(); assertEquals(158, inliers.size()); } }
errorAlg = new FitByMeanStatistics<Model,Point>(pruneThreshold); break; errorAlg = new FitByMedianStatistics<Model,Point>(pruneThreshold); break;
private ModelMatcher<double[],Double> createModel(int minPoints, double fitThreshold) { DoubleArrayManager manager = new DoubleArrayManager(1); DistanceFromMeanModel dist = new DistanceFromMeanModel(); MeanModelFitter fitter = new MeanModelFitter(); return createModelMatcher(manager,dist, fitter,fitter, minPoints, fitThreshold); }
inliers.clear(); for( int i = 0; i < dataSet.size(); i++ ) pruneList.add( new PointIndex<Point>(dataSet.get(i),i)); inliers.clear(); errorAlg.init(modelError, pruneList); errorAlg.computeStatistics(); centerError = errorAlg.getErrorMetric(); converged = true; else if (computeDiff(currParam, param) <= minChange) { converged = true; errorAlg.prune(); oldCenter = centerError;
errorAlg = new FitByMeanStatistics<Model,Point>(pruneThreshold); break; errorAlg = new FitByMedianStatistics<Model,Point>(pruneThreshold); break;
@Override public void computeStatistics() { computeMean(); computeStandardDeviation(); }