Enum linfa_nn::CommonNearestNeighbour
source · [−]#[non_exhaustive]
pub enum CommonNearestNeighbour {
LinearSearch,
KdTree,
BallTree,
}
Expand description
Enum that dispatches to one of the crate’s NearestNeighbour
implementations based on value. This enum should be used instead of using types like
LinearSearch
and KdTree
directly.
Example
use rand_xoshiro::Xoshiro256Plus;
use ndarray_rand::{rand::SeedableRng, rand_distr::Uniform, RandomExt};
use ndarray::{Array1, Array2};
use linfa_nn::{distance::*, CommonNearestNeighbour, NearestNeighbour};
// Use seedable RNG for generating points
let mut rng = Xoshiro256Plus::seed_from_u64(40);
let n_features = 3;
let distr = Uniform::new(-500., 500.);
// Randomly generate points for building the index
let points = Array2::random_using((5000, n_features), distr, &mut rng);
// Build a K-D tree with Euclidean distance as the distance function
let nn = CommonNearestNeighbour::KdTree.from_batch(&points, L2Dist).unwrap();
let pt = Array1::random_using(n_features, distr, &mut rng);
// Compute the 10 nearest points to `pt` in the index
let nearest = nn.k_nearest(pt.view(), 10).unwrap();
// Compute all points within 100 units of `pt`
let range = nn.within_range(pt.view(), 100.0).unwrap();
Variants (Non-exhaustive)
This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
LinearSearch
Linear search
KdTree
KD Tree
BallTree
Ball Tree
Trait Implementations
sourceimpl Clone for CommonNearestNeighbour
impl Clone for CommonNearestNeighbour
sourcefn clone(&self) -> CommonNearestNeighbour
fn clone(&self) -> CommonNearestNeighbour
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for CommonNearestNeighbour
impl Debug for CommonNearestNeighbour
sourceimpl NearestNeighbour for CommonNearestNeighbour
impl NearestNeighbour for CommonNearestNeighbour
sourcefn from_batch_with_leaf_size<'a, F: Float, DT: Data<Elem = F>, D: 'a + Distance<F>>(
&self,
batch: &'a ArrayBase<DT, Ix2>,
leaf_size: usize,
dist_fn: D
) -> Result<Box<dyn NearestNeighbourIndex<F> + 'a>, BuildError>
fn from_batch_with_leaf_size<'a, F: Float, DT: Data<Elem = F>, D: 'a + Distance<F>>(
&self,
batch: &'a ArrayBase<DT, Ix2>,
leaf_size: usize,
dist_fn: D
) -> Result<Box<dyn NearestNeighbourIndex<F> + 'a>, BuildError>
Builds a spatial index using a MxN two-dimensional array representing M points with N
dimensions. Also takes leaf_size
, which specifies the number of elements in the leaf
nodes of tree-like index structures. Read more
sourcefn from_batch<'a, F: Float, DT: Data<Elem = F>, D: 'a + Distance<F>>(
&self,
batch: &'a ArrayBase<DT, Ix2>,
dist_fn: D
) -> Result<Box<dyn NearestNeighbourIndex<F> + 'a>, BuildError>
fn from_batch<'a, F: Float, DT: Data<Elem = F>, D: 'a + Distance<F>>(
&self,
batch: &'a ArrayBase<DT, Ix2>,
dist_fn: D
) -> Result<Box<dyn NearestNeighbourIndex<F> + 'a>, BuildError>
Builds a spatial index using a default leaf size. See from_batch_with_leaf_size
for more
information. Read more
impl Eq for CommonNearestNeighbour
impl StructuralEq for CommonNearestNeighbour
impl StructuralPartialEq for CommonNearestNeighbour
Auto Trait Implementations
impl RefUnwindSafe for CommonNearestNeighbour
impl Send for CommonNearestNeighbour
impl Sync for CommonNearestNeighbour
impl Unpin for CommonNearestNeighbour
impl UnwindSafe for CommonNearestNeighbour
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to key
and return true
if they are equal.