/** * Construct the assigner using the given cluster data. * * @param data the cluster data */ public KDTreeByteEuclideanAssigner(byte[][] data) { nn = new ByteNearestNeighboursKDTree(data, ByteNearestNeighboursKDTree.DEFAULT_NTREES, ByteNearestNeighboursKDTree.DEFAULT_NCHECKS); }
@Override public ByteNearestNeighboursKDTree create(byte[][] data) { return new ByteNearestNeighboursKDTree(data, ntrees, nchecks); } }
@Override public ByteNearestNeighboursKDTree create(byte[][] data) { return new ByteNearestNeighboursKDTree(data, ntrees, nchecks); } }
@Override public void setModelFeatures(List<T> modelkeys) { modelKeypoints = modelkeys; byte [][] data = new byte[modelkeys.size()][]; for (int i=0; i<modelkeys.size(); i++) data[i] = modelkeys.get(i).ivec; modelKeypointsKNN = new ByteNearestNeighboursKDTree(data, 8, 768); }
@Override public void setModelFeatures(List<T> modelkeys) { modelKeypoints = modelkeys; final byte[][] data = new byte[modelkeys.size()][]; for (int i = 0; i < modelkeys.size(); i++) data[i] = modelkeys.get(i).ivec; modelKeypointsKNN = new ByteNearestNeighboursKDTree(data, 8, 768); }
@Override public void setModelFeatures(List<T> modelkeys) { modelKeypoints = modelkeys; final byte[][] data = new byte[modelkeys.size()][]; for (int i = 0; i < modelkeys.size(); i++) data[i] = modelkeys.get(i).ivec; modelKeypointsKNN = new ByteNearestNeighboursKDTree(data, 1, 100); } }
@Override public void setModelFeatures(List<T> modelkeys) { modelKeypoints = modelkeys; final byte[][] data = new byte[modelkeys.size()][]; for (int i = 0; i < modelkeys.size(); i++) data[i] = modelkeys.get(i).ivec; modelKeypointsKNN = new ByteNearestNeighboursKDTree(data, 8, 768); }
@Override public void setModelFeatures(List<T> modelkeys) { this.modelKeypoints = modelkeys; byte [][] data = new byte[modelkeys.size()][]; for (int i=0; i<modelkeys.size(); i++) data[i] = modelkeys.get(i).ivec; modelKeypointsKNN = new ByteNearestNeighboursKDTree(data, 1, 100); }
@Override public void setModelFeatures(List<T> modelkeys) { modelKeypoints = modelkeys; byte [][] data = new byte[modelkeys.size()][]; for (int i=0; i<modelkeys.size(); i++) data[i] = modelkeys.get(i).ivec; modelKeypointsKNN = new ByteNearestNeighboursKDTree(data, 8, 768); }
@Override public void setModelFeatures(List<T> modelkeys) { modelKeypoints = modelkeys; final byte[][] data = new byte[modelkeys.size()][]; for (int i = 0; i < modelkeys.size(); i++) data[i] = modelkeys.get(i).ivec; modelKeypointsKNN = new ByteNearestNeighboursKDTree(data, 1, 100); } }
@Override public void setModelFeatures(List<T> modelkeys) { this.modelKeypoints = modelkeys; byte [][] data = new byte[modelkeys.size()][]; for (int i=0; i<modelkeys.size(); i++) data[i] = modelkeys.get(i).ivec; modelKeypointsKNN = new ByteNearestNeighboursKDTree(data, 1, 100); }
/** * Construct the assigner using the given cluster data. The assigner * is backed by either a {@link ByteNearestNeighboursExact} or * {@link ByteNearestNeighboursKDTree}, depending on whether the exact * parameter is true or false. If the parameter is true, then the * resultant {@link ByteNearestNeighboursExact} will use Euclidean * distance. * * @param data the cluster data * @param exact if true, then use exact mode; false implies approximate mode. * @param numNeighbours the number of nearest neighbours to select. */ public ByteKNNAssigner(byte[][] data, boolean exact, int numNeighbours) { this.numNeighbours = numNeighbours; if (exact) { nn = new ByteNearestNeighboursExact(data); } else { nn = new ByteNearestNeighboursKDTree(data, ByteNearestNeighboursKDTree.DEFAULT_NTREES, ByteNearestNeighboursKDTree.DEFAULT_NCHECKS); } }
/** * Construct the assigner using the given cluster data. * * @param provider the cluster data provider */ public KDTreeByteEuclideanAssigner(CentroidsProvider<byte[]> provider) { if (provider instanceof ByteNearestNeighboursProvider) { ByteNearestNeighbours internal = ((ByteNearestNeighboursProvider)provider).getNearestNeighbours(); if (internal != null && internal instanceof ByteNearestNeighboursKDTree) { nn = (ByteNearestNeighboursKDTree) internal; return; } } nn = new ByteNearestNeighboursKDTree(provider.getCentroids(), ByteNearestNeighboursKDTree.DEFAULT_NTREES, ByteNearestNeighboursKDTree.DEFAULT_NCHECKS); }
/** * Construct the assigner using the given cluster data. The assigner * is backed by either a {@link ByteNearestNeighboursExact} or * {@link ByteNearestNeighboursKDTree}, depending on whether the exact * parameter is true or false. If the parameter is true, then the * resultant {@link ByteNearestNeighboursExact} will use Euclidean * distance. * * @param provider the cluster data provider * @param exact if true, then use exact mode; false implies approximate mode. * @param numNeighbours the number of nearest neighbours to select. */ public ByteKNNAssigner(CentroidsProvider<byte[]> provider, boolean exact, int numNeighbours) { this.numNeighbours = numNeighbours; if (exact) { nn = new ByteNearestNeighboursExact(provider.getCentroids()); } else { if (provider instanceof ByteNearestNeighboursProvider) { ByteNearestNeighbours internal = ((ByteNearestNeighboursProvider)provider).getNearestNeighbours(); if (internal != null && internal instanceof ByteNearestNeighboursKDTree) { nn = (ByteNearestNeighboursKDTree) internal; return; } } nn = new ByteNearestNeighboursKDTree(provider.getCentroids(), ByteNearestNeighboursKDTree.DEFAULT_NTREES, ByteNearestNeighboursKDTree.DEFAULT_NCHECKS); } }