@Override protected KMediansLloyd<V> makeInstance() { return new KMediansLloyd<>(distanceFunction, k, maxiter, initializer); } }
@Override public Clustering<MeanModel> run(Database database, Relation<V> relation) { Instance instance = new Instance(relation, getDistanceFunction(), initialMeans(database, relation)); instance.run(maxiter); return instance.buildMediansResult(); }
LOG.statistics(new StringStatistic(KEY + ".initialization", initializer.toString())); List<Vector> medians = initializer.chooseInitialMeans(database, relation, k, getDistanceFunction(), Vector.FACTORY); for(; maxiter <= 0 || iteration < maxiter; iteration++) { LOG.incrementProcessed(prog); boolean changed = assignToNearestCluster(relation, medians, clusters, assignment, distsum); medians = medians(clusters, medians, relation);
@Test public void testKMediansLloyd() { Database db = makeSimpleDatabase(UNITTEST + "different-densities-2d-no-noise.ascii", 1000); Clustering<?> result = new ELKIBuilder<KMediansLloyd<DoubleVector>>(KMediansLloyd.class) // .with(KMeans.K_ID, 5) // .with(KMeans.SEED_ID, 7) // .build().run(db); testFMeasure(db, result, 0.998005); testClusterSizes(result, new int[] { 199, 200, 200, 200, 201 }); } }
@Override public Clustering<MeanModel> run(Database database, Relation<V> relation) { Instance instance = new Instance(relation, getDistanceFunction(), initialMeans(database, relation)); instance.run(maxiter); return instance.buildMediansResult(); }
@Override protected KMediansLloyd<V> makeInstance() { return new KMediansLloyd<>(distanceFunction, k, maxiter, initializer); } }
@Override protected KMediansLloyd<V> makeInstance() { return new KMediansLloyd<>(distanceFunction, k, maxiter, initializer); } }