@Override public SpatialClusters<?> create(byte[][] data) { if (this.precision == Precision.BYTE) { RandomSetByteClusterer c = null; c = new RandomSetByteClusterer(data[0].length, K); if (seed >= 0) c.setSeed(seed); System.err.printf("Building BYTE vocabulary tree\n"); return c.cluster(data); } else { RandomSetIntClusterer c = null; c = new RandomSetIntClusterer(data[0].length, K); if (seed >= 0) c.setSeed(seed); System.err.printf("Building INT vocabulary tree\n"); return c.cluster(ByteArrayConverter.byteToInt(data)); } }
@Override public SpatialClusters<?> create(byte[][] data) { if (this.precision == Precision.BYTE) { RandomByteClusterer c = null; c = new RandomByteClusterer(data[0].length, K); if (seed >= 0) c.setSeed(seed); System.err.printf("Building BYTE vocabulary tree\n"); return c.cluster(data); } else { RandomIntClusterer c = null; c = new RandomIntClusterer(data[0].length, K); if (seed >= 0) c.setSeed(seed); System.err.printf("Building INT vocabulary tree\n"); return c.cluster(ByteArrayConverter.byteToInt(data)); } }
@Override public int[][] performClustering(SparseMatrix data) { return this.cluster(data).clusters(); }
@Override public SpatialClusters<?> create(List<SampleBatch> batches) throws Exception { if (this.precision == Precision.BYTE) { final SampleBatchByteDataSource ds = new SampleBatchByteDataSource(batches); ds.setSeed(seed); RandomSetByteClusterer c = null; c = new RandomSetByteClusterer(ds.numDimensions(), K); return c.cluster(ds); } else { final SampleBatchIntDataSource ds = new SampleBatchIntDataSource(batches); ds.setSeed(seed); RandomSetIntClusterer c = null; c = new RandomSetIntClusterer(ds.numDimensions(), K); return c.cluster(ds); } }
@Override public int[][] performClustering(byte[][] data) { ByteCentroidsResult res = this.cluster(data); return new IndexClusters(res.defaultHardAssigner().assign(data)).clusters(); }
@Override public int[][] performClustering(int[][] data) { IntCentroidsResult res = this.cluster(data); return new IndexClusters(res.defaultHardAssigner().assign(data)).clusters(); }
@Override public int[][] performClustering(float[][] data) { FloatCentroidsResult res = this.cluster(data); return new IndexClusters(res.defaultHardAssigner().assign(data)).clusters(); }
@Override public int[][] performClustering(double[][] data) { DoubleCentroidsResult res = this.cluster(data); return new IndexClusters(res.defaultHardAssigner().assign(data)).clusters(); }
@Override public int[][] performClustering(short[][] data) { ShortCentroidsResult res = this.cluster(data); return new IndexClusters(res.defaultHardAssigner().assign(data)).clusters(); }
@Override public int[][] performClustering(long[][] data) { LongCentroidsResult res = this.cluster(data); return new IndexClusters(res.defaultHardAssigner().assign(data)).clusters(); }