@Override public int numDimensions() { return this.internalAssigner.numDimensions(); } }
@Override public int size() { return this.internalAssigner.size(); }
@Override public void assignDistance(DATATYPE[] data, int[] indices, float[] distances) { internalAssigner.assignDistance(data, indices, distances); for (int i = 0; i < data.length; i++) { if (!allow(distances[i])) { distances[i] = Float.NaN; indices[i] = -1; } } }
@Override public int[][] performClustering(int[][] data) { return new IndexClusters(this.cluster(data).defaultHardAssigner().assign(data)).clusters(); } }
@Override public SparseDoubleFV aggregateVectors(List<? extends ArrayFeatureVector<DATATYPE>> features) { final SparseDoubleFV fv = new SparseDoubleFV(assigner.size()); for (final ArrayFeatureVector<DATATYPE> f : features) { final IndependentPair<int[], DISTANCE> a = assigner.assignWeighted(f.values); increment(fv, a); } return fv; }
@Override public int[][] performClustering(int[][] data) { return new IndexClusters(this.cluster(data).defaultHardAssigner().assign(data)).clusters(); } }
@Override public SparseDoubleFV aggregateVectors(List<? extends ArrayFeatureVector<DATATYPE>> features) { final SparseDoubleFV fv = new SparseDoubleFV(assigner.size()); for (final ArrayFeatureVector<DATATYPE> f : features) { final IndependentPair<int[], DISTANCE> a = assigner.assignWeighted(f.values); increment(fv, a); } return fv; }
@Override public IntFloatPair assignDistance(DATATYPE data) { final IntFloatPair res = internalAssigner.assignDistance(data); if (!allow(res.second)) { res.second = Float.NaN; res.first = -1; } return res; }
@Override public int[][] performClustering(byte[][] data) { ByteCentroidsResult clusters = this.cluster(data); return new IndexClusters(clusters.defaultHardAssigner().assign(data)).clusters(); }
@Override public SparseIntFV aggregate(List<? extends LocalFeature<?, ? extends ArrayFeatureVector<T>>> features) { final SparseIntFV fv = new SparseIntFV(this.assigner.size()); for (final LocalFeature<?, ? extends ArrayFeatureVector<T>> f : features) { final int idx = assigner.assign(f.getFeatureVector().values); fv.values.increment(idx, 1); } return fv; }
/** * Aggregate the given features into a vector. * * @param features * the features to aggregate * @return the aggregated vector */ public SparseDoubleFV aggregateVectorsRaw(List<DATATYPE> features) { final SparseDoubleFV fv = new SparseDoubleFV(assigner.size()); for (final DATATYPE f : features) { final IndependentPair<int[], DISTANCE> a = assigner.assignWeighted(f); increment(fv, a); } return fv; }
@Override public int[][] performClustering(double[][] data) { DoubleCentroidsResult clusters = this.cluster(data); return new IndexClusters(clusters.defaultHardAssigner().assign(data)).clusters(); }
/** * Aggregate the given features into a vector. * * @param features * the features to aggregate * @return the aggregated vector */ public SparseDoubleFV aggregateVectorsRaw(List<DATATYPE> features) { final SparseDoubleFV fv = new SparseDoubleFV(assigner.size()); for (final DATATYPE f : features) { final IndependentPair<int[], DISTANCE> a = assigner.assignWeighted(f); increment(fv, a); } return fv; }
@Override public int[][] performClustering(short[][] data) { ShortCentroidsResult res = this.cluster(data); return new IndexClusters(res.defaultHardAssigner().assign(data)).clusters(); }
@Override public SparseDoubleFV aggregate(List<? extends LocalFeature<?, ? extends ArrayFeatureVector<DATATYPE>>> features) { final SparseDoubleFV fv = new SparseDoubleFV(assigner.size()); for (final LocalFeature<?, ? extends ArrayFeatureVector<DATATYPE>> f : features) { final IndependentPair<int[], DISTANCE> a = assigner.assignWeighted(f.getFeatureVector().values); increment(fv, a); } return fv; }
@Override public int[][] performClustering(T[] data) { final FeatureVectorCentroidsResult<T> clusters = this.cluster(data); return new IndexClusters(clusters.defaultHardAssigner().assign(data)).clusters(); }
@Override public SparseDoubleFV aggregate(List<? extends LocalFeature<?, ? extends ArrayFeatureVector<DATATYPE>>> features) { final SparseDoubleFV fv = new SparseDoubleFV(assigner.size()); for (final LocalFeature<?, ? extends ArrayFeatureVector<DATATYPE>> f : features) { final IndependentPair<int[], DISTANCE> a = assigner.assignWeighted(f.getFeatureVector().values); increment(fv, a); } return fv; }
@Override public int[][] performClustering(int[][] data) { IntCentroidsResult clusters = this.cluster(data); return new IndexClusters(clusters.defaultHardAssigner().assign(data)).clusters(); }