jsat.linear.vectorcollection
Class CoverTree<V extends Vec>
- java.lang.Object
-
- jsat.linear.vectorcollection.CoverTree<V>
-
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, IncrementalCollection<V>, VectorCollection<V>
public final class CoverTree<V extends Vec> extends java.lang.Object implements IncrementalCollection<V>
This class implements the Cover-tree algorithm for answering nearest neighbor queries. In particular, it uses the "Simplified Cover-tree" algorithm.
Note, this implementation does not yet support parallel construction.
See:- Beygelzimer, A., Kakade, S., & Langford, J. (2006). Cover trees for nearest neighbor. In International Conference on Machine Learning (pp. 97–104). New York: ACM. Retrieved from here
- Izbicki, M., & Shelton, C. R. (2015). Faster Cover Trees. In Proceedings of the Thirty-Second International Conference on Machine Learning (Vol. 37).
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor and Description CoverTree(CoverTree<V> toCopy)CoverTree(DistanceMetric dm)CoverTree(java.util.List<V> source, DistanceMetric dm)CoverTree(java.util.List<V> source, DistanceMetric dm, boolean parallel)CoverTree(java.util.List<V> source, DistanceMetric dm, boolean parallel, boolean looseBounds)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description voidbuild(boolean parallel, java.util.List<V> collection, DistanceMetric dm)Builds this metric index from the given collection of points using the given distance metric.CoverTree<V>clone()Vget(int indx)Accesses a vector from this collection via index.java.util.List<java.lang.Double>getAccelerationCache()DistanceMetricgetDistanceMetric()voidinsert(V x)Incrementally adds the given datapoint into the collectionvoidsearch(Vec query, double range, java.util.List<java.lang.Integer> neighbors, java.util.List<java.lang.Double> distances)Performs a range search of the current collection.voidsearch(Vec query, int numNeighbors, java.util.List<java.lang.Integer> neighbors, java.util.List<java.lang.Double> distances)Performs k-Nearest Neighbor search of the current collection.voidsetDistanceMetric(DistanceMetric dm)Sets the distance metric used for this collection.voidsetLooseBounds(boolean looseBounds)intsize()Returns the number of vectors stored in the collection
-
-
-
Constructor Detail
-
CoverTree
public CoverTree(DistanceMetric dm)
-
CoverTree
public CoverTree(java.util.List<V> source, DistanceMetric dm)
-
CoverTree
public CoverTree(java.util.List<V> source, DistanceMetric dm, boolean parallel)
-
CoverTree
public CoverTree(java.util.List<V> source, DistanceMetric dm, boolean parallel, boolean looseBounds)
-
-
Method Detail
-
getAccelerationCache
public java.util.List<java.lang.Double> getAccelerationCache()
- Specified by:
getAccelerationCachein interfaceVectorCollection<V extends Vec>
-
build
public void build(boolean parallel, java.util.List<V> collection, DistanceMetric dm)Description copied from interface:VectorCollectionBuilds this metric index from the given collection of points using the given distance metric.- Specified by:
buildin interfaceVectorCollection<V extends Vec>- Parameters:
parallel-trueif the index should be built in parallel, orfalseif it should be done in a single thread.collection- the list of vectors to put into the indexdm- the distance metric to build the index using.
-
setDistanceMetric
public void setDistanceMetric(DistanceMetric dm)
Description copied from interface:VectorCollectionSets the distance metric used for this collection.- Specified by:
setDistanceMetricin interfaceVectorCollection<V extends Vec>- Parameters:
dm- the distance metric to use
-
getDistanceMetric
public DistanceMetric getDistanceMetric()
- Specified by:
getDistanceMetricin interfaceVectorCollection<V extends Vec>- Returns:
- the distance metric to use
-
setLooseBounds
public void setLooseBounds(boolean looseBounds)
-
search
public void search(Vec query, double range, java.util.List<java.lang.Integer> neighbors, java.util.List<java.lang.Double> distances)
Description copied from interface:VectorCollectionPerforms a range search of the current collection. The index and distance of each found neighbor will be placed into the given Lists.- Specified by:
searchin interfaceVectorCollection<V extends Vec>- Parameters:
query- the point to search for the neighbors within a given radius.range- the radius to search for all the neighbors with a distance ≤ range.neighbors- the list to store the index of the neighbors in. Will be sorted by distance to the query, and paired with the values in distances.distances- the list to store the distance of the neighbors to the query in. Will be sorted, and paired with the values in neighbors.
-
search
public void search(Vec query, int numNeighbors, java.util.List<java.lang.Integer> neighbors, java.util.List<java.lang.Double> distances)
Description copied from interface:VectorCollectionPerforms k-Nearest Neighbor search of the current collection. The index and distance of each found neighbor will be placed into the given Lists.- Specified by:
searchin interfaceVectorCollection<V extends Vec>- Parameters:
query- the point to search for the k-nearest neighbors ofnumNeighbors- the number of neighbors k to search for.neighbors- the list to store the index of the neighbors in. Will be sorted by distance to the query, and paired with the values in distances.distances- the list to store the distance of the neighbors to the query in. Will be sorted, and paired with the values in neighbors.
-
size
public int size()
Description copied from interface:VectorCollectionReturns the number of vectors stored in the collection- Specified by:
sizein interfaceVectorCollection<V extends Vec>- Returns:
- the size of the collection
-
get
public V get(int indx)
Description copied from interface:VectorCollectionAccesses a vector from this collection via index.- Specified by:
getin interfaceVectorCollection<V extends Vec>- Parameters:
indx- the index in [0,VectorCollection.size()) of the vector to access- Returns:
- the vector from the collection
-
clone
public CoverTree<V> clone()
- Specified by:
clonein interfaceIncrementalCollection<V extends Vec>- Specified by:
clonein interfaceVectorCollection<V extends Vec>- Overrides:
clonein classjava.lang.Object
-
insert
public void insert(V x)
Description copied from interface:IncrementalCollectionIncrementally adds the given datapoint into the collection- Specified by:
insertin interfaceIncrementalCollection<V extends Vec>- Parameters:
x- the vector to add to the collection
-
-
DataMelt 3.0 © DataMelt by jWork.ORG