mlpack
master
|
The RAModel class provides an abstraction for the RASearch class, abstracting away the TreeType parameter and allowing it to be specified at runtime in this class. More...
Public Types | |
enum | TreeTypes { KD_TREE, COVER_TREE, R_TREE, R_STAR_TREE, X_TREE, HILBERT_R_TREE, R_PLUS_TREE, R_PLUS_PLUS_TREE, UB_TREE, OCTREE } |
The list of tree types we can use with RASearch. More... | |
Public Member Functions | |
RAModel (TreeTypes treeType=TreeTypes::KD_TREE, bool randomBasis=false) | |
Initialize the RAModel with the given type and whether or not a random basis should be used. More... | |
RAModel (const RAModel &other) | |
Copy the given RAModel. More... | |
RAModel (RAModel &&other) | |
Take ownership of the given RAModel. More... | |
~RAModel () | |
Clean memory, if necessary. More... | |
double | Alpha () const |
Get the desired success probability. More... | |
double & | Alpha () |
Modify the desired success probability. More... | |
void | BuildModel (arma::mat &&referenceSet, const size_t leafSize, const bool naive, const bool singleMode) |
Build the reference tree. More... | |
const arma::mat & | Dataset () const |
Expose the dataset. More... | |
bool | FirstLeafExact () const |
Get whether or not we traverse to the first leaf without approximation. More... | |
bool & | FirstLeafExact () |
Modify whether or not we traverse to the first leaf without approximation. More... | |
size_t | LeafSize () const |
Get the leaf size (only relevant when the kd-tree is used). More... | |
size_t & | LeafSize () |
Modify the leaf size (only relevant when the kd-tree is used). More... | |
bool | Naive () const |
Get whether or not naive search is being used. More... | |
bool & | Naive () |
Modify whether or not naive search is being used. More... | |
RAModel & | operator= (const RAModel &other) |
Copy the given RAModel. More... | |
RAModel & | operator= (RAModel &&other) |
Take ownership of the given RAModel. More... | |
bool | RandomBasis () const |
Get whether or not a random basis is being used. More... | |
bool & | RandomBasis () |
Modify whether or not a random basis is being used. More... | |
bool | SampleAtLeaves () const |
Get whether or not sampling is done at the leaves. More... | |
bool & | SampleAtLeaves () |
Modify whether or not sampling is done at the leaves. More... | |
void | Search (arma::mat &&querySet, const size_t k, arma::Mat< size_t > &neighbors, arma::mat &distances) |
Perform rank-approximate neighbor search, taking ownership of the query set. More... | |
void | Search (const size_t k, arma::Mat< size_t > &neighbors, arma::mat &distances) |
Perform rank-approximate neighbor search, using the reference set as the query set. More... | |
template<typename Archive > | |
void | Serialize (Archive &ar, const unsigned int) |
Serialize the model. More... | |
bool | SingleMode () const |
Get whether or not single-tree search is being used. More... | |
bool & | SingleMode () |
Modify whether or not single-tree search is being used. More... | |
size_t | SingleSampleLimit () const |
Get the limit on the size of a node that can be approximated. More... | |
size_t & | SingleSampleLimit () |
Modify the limit on the size of a node that can be approximation. More... | |
double | Tau () const |
Get the rank-approximation in percentile of the data. More... | |
double & | Tau () |
Modify the rank-approximation in percentile of the data. More... | |
std::string | TreeName () const |
Get the name of the tree type. More... | |
TreeTypes | TreeType () const |
Get the type of tree being used. More... | |
TreeTypes & | TreeType () |
Modify the type of tree being used. More... | |
Private Types | |
template<template< typename TreeMetricType, typename TreeStatType, typename TreeMatType > class TreeType> | |
using | RAType = RASearch< SortPolicy, metric::EuclideanDistance, arma::mat, TreeType > |
Typedef the RASearch class we'll use. More... | |
Private Attributes | |
RAType< tree::StandardCoverTree > * | coverTreeRA |
Non-NULL if the cover tree is used. More... | |
RAType< tree::HilbertRTree > * | hilbertRTreeRA |
Non-NULL if the Hilbert R tree is used. More... | |
RAType< tree::KDTree > * | kdTreeRA |
Non-NULL if the kd-tree is used. More... | |
size_t | leafSize |
The leaf size of the tree being used (useful only for the kd-tree). More... | |
RAType< tree::Octree > * | octreeRA |
Non-NULL if the octree is used. More... | |
arma::mat | q |
The basis to project into. More... | |
bool | randomBasis |
If true, randomly project into a new basis. More... | |
RAType< tree::RPlusPlusTree > * | rPlusPlusTreeRA |
Non-NULL if the R++ tree is used. More... | |
RAType< tree::RPlusTree > * | rPlusTreeRA |
Non-NULL if the R+ tree is used. More... | |
RAType< tree::RStarTree > * | rStarTreeRA |
Non-NULL if the R* tree is used. More... | |
RAType< tree::RTree > * | rTreeRA |
Non-NULL if the R tree is used. More... | |
TreeTypes | treeType |
The type of tree being used. More... | |
RAType< tree::UBTree > * | ubTreeRA |
Non-NULL if the UB tree is used. More... | |
RAType< tree::XTree > * | xTreeRA |
Non-NULL if the X tree is used. More... | |
The RAModel class provides an abstraction for the RASearch class, abstracting away the TreeType parameter and allowing it to be specified at runtime in this class.
This class is written for the sake of the 'allkrann' program, but is not necessarily restricted to that use.
SortPolicy | Sorting policy for neighbor searching (see RASearch). |
Definition at line 36 of file ra_model.hpp.
|
private |
Typedef the RASearch class we'll use.
Definition at line 75 of file ra_model.hpp.
enum mlpack::neighbor::RAModel::TreeTypes |
The list of tree types we can use with RASearch.
Does not include ball trees; see #338.
Enumerator | |
---|---|
KD_TREE | |
COVER_TREE | |
R_TREE | |
R_STAR_TREE | |
X_TREE | |
HILBERT_R_TREE | |
R_PLUS_TREE | |
R_PLUS_PLUS_TREE | |
UB_TREE | |
OCTREE |
Definition at line 43 of file ra_model.hpp.
mlpack::neighbor::RAModel< SortPolicy >::RAModel | ( | TreeTypes | treeType = TreeTypes::KD_TREE , |
bool | randomBasis = false |
||
) |
Initialize the RAModel with the given type and whether or not a random basis should be used.
mlpack::neighbor::RAModel< SortPolicy >::RAModel | ( | const RAModel< SortPolicy > & | other | ) |
mlpack::neighbor::RAModel< SortPolicy >::RAModel | ( | RAModel< SortPolicy > && | other | ) |
mlpack::neighbor::RAModel< SortPolicy >::~RAModel | ( | ) |
Clean memory, if necessary.
double mlpack::neighbor::RAModel< SortPolicy >::Alpha | ( | ) | const |
Get the desired success probability.
double& mlpack::neighbor::RAModel< SortPolicy >::Alpha | ( | ) |
Modify the desired success probability.
void mlpack::neighbor::RAModel< SortPolicy >::BuildModel | ( | arma::mat && | referenceSet, |
const size_t | leafSize, | ||
const bool | naive, | ||
const bool | singleMode | ||
) |
Build the reference tree.
const arma::mat& mlpack::neighbor::RAModel< SortPolicy >::Dataset | ( | ) | const |
Expose the dataset.
bool mlpack::neighbor::RAModel< SortPolicy >::FirstLeafExact | ( | ) | const |
Get whether or not we traverse to the first leaf without approximation.
bool& mlpack::neighbor::RAModel< SortPolicy >::FirstLeafExact | ( | ) |
Modify whether or not we traverse to the first leaf without approximation.
size_t mlpack::neighbor::RAModel< SortPolicy >::LeafSize | ( | ) | const |
Get the leaf size (only relevant when the kd-tree is used).
size_t& mlpack::neighbor::RAModel< SortPolicy >::LeafSize | ( | ) |
Modify the leaf size (only relevant when the kd-tree is used).
bool mlpack::neighbor::RAModel< SortPolicy >::Naive | ( | ) | const |
Get whether or not naive search is being used.
bool& mlpack::neighbor::RAModel< SortPolicy >::Naive | ( | ) |
Modify whether or not naive search is being used.
RAModel& mlpack::neighbor::RAModel< SortPolicy >::operator= | ( | const RAModel< SortPolicy > & | other | ) |
RAModel& mlpack::neighbor::RAModel< SortPolicy >::operator= | ( | RAModel< SortPolicy > && | other | ) |
bool mlpack::neighbor::RAModel< SortPolicy >::RandomBasis | ( | ) | const |
Get whether or not a random basis is being used.
bool& mlpack::neighbor::RAModel< SortPolicy >::RandomBasis | ( | ) |
Modify whether or not a random basis is being used.
Be sure to rebuild the model using BuildModel().
bool mlpack::neighbor::RAModel< SortPolicy >::SampleAtLeaves | ( | ) | const |
Get whether or not sampling is done at the leaves.
bool& mlpack::neighbor::RAModel< SortPolicy >::SampleAtLeaves | ( | ) |
Modify whether or not sampling is done at the leaves.
void mlpack::neighbor::RAModel< SortPolicy >::Search | ( | arma::mat && | querySet, |
const size_t | k, | ||
arma::Mat< size_t > & | neighbors, | ||
arma::mat & | distances | ||
) |
Perform rank-approximate neighbor search, taking ownership of the query set.
void mlpack::neighbor::RAModel< SortPolicy >::Search | ( | const size_t | k, |
arma::Mat< size_t > & | neighbors, | ||
arma::mat & | distances | ||
) |
Perform rank-approximate neighbor search, using the reference set as the query set.
void mlpack::neighbor::RAModel< SortPolicy >::Serialize | ( | Archive & | ar, |
const unsigned | int | ||
) |
Serialize the model.
bool mlpack::neighbor::RAModel< SortPolicy >::SingleMode | ( | ) | const |
Get whether or not single-tree search is being used.
bool& mlpack::neighbor::RAModel< SortPolicy >::SingleMode | ( | ) |
Modify whether or not single-tree search is being used.
size_t mlpack::neighbor::RAModel< SortPolicy >::SingleSampleLimit | ( | ) | const |
Get the limit on the size of a node that can be approximated.
size_t& mlpack::neighbor::RAModel< SortPolicy >::SingleSampleLimit | ( | ) |
Modify the limit on the size of a node that can be approximation.
double mlpack::neighbor::RAModel< SortPolicy >::Tau | ( | ) | const |
Get the rank-approximation in percentile of the data.
double& mlpack::neighbor::RAModel< SortPolicy >::Tau | ( | ) |
Modify the rank-approximation in percentile of the data.
std::string mlpack::neighbor::RAModel< SortPolicy >::TreeName | ( | ) | const |
Get the name of the tree type.
TreeTypes mlpack::neighbor::RAModel< SortPolicy >::TreeType | ( | ) | const |
Get the type of tree being used.
TreeTypes& mlpack::neighbor::RAModel< SortPolicy >::TreeType | ( | ) |
Modify the type of tree being used.
|
private |
Non-NULL if the cover tree is used.
Definition at line 80 of file ra_model.hpp.
|
private |
Non-NULL if the Hilbert R tree is used.
Definition at line 88 of file ra_model.hpp.
|
private |
Non-NULL if the kd-tree is used.
Definition at line 78 of file ra_model.hpp.
|
private |
The leaf size of the tree being used (useful only for the kd-tree).
Definition at line 61 of file ra_model.hpp.
|
private |
Non-NULL if the octree is used.
Definition at line 96 of file ra_model.hpp.
|
private |
The basis to project into.
Definition at line 66 of file ra_model.hpp.
|
private |
If true, randomly project into a new basis.
Definition at line 64 of file ra_model.hpp.
|
private |
Non-NULL if the R++ tree is used.
Definition at line 92 of file ra_model.hpp.
|
private |
Non-NULL if the R+ tree is used.
Definition at line 90 of file ra_model.hpp.
|
private |
Non-NULL if the R* tree is used.
Definition at line 84 of file ra_model.hpp.
|
private |
Non-NULL if the R tree is used.
Definition at line 82 of file ra_model.hpp.
|
private |
The type of tree being used.
Definition at line 59 of file ra_model.hpp.
|
private |
Non-NULL if the UB tree is used.
Definition at line 94 of file ra_model.hpp.
|
private |
Non-NULL if the X tree is used.
Definition at line 86 of file ra_model.hpp.