mlpack  2.0.1
dual_tree_kmeans_rules.hpp
Go to the documentation of this file.
1 
16 #ifndef __MLPACK_METHODS_KMEANS_DUAL_TREE_KMEANS_RULES_HPP
17 #define __MLPACK_METHODS_KMEANS_DUAL_TREE_KMEANS_RULES_HPP
18 
20 
21 namespace mlpack {
22 namespace kmeans {
23 
24 template<typename MetricType, typename TreeType>
26 {
27  public:
28  DualTreeKMeansRules(const arma::mat& centroids,
29  const arma::mat& dataset,
30  arma::Row<size_t>& assignments,
31  arma::vec& upperBounds,
32  arma::vec& lowerBounds,
33  MetricType& metric,
34  const std::vector<bool>& prunedPoints,
35  const std::vector<size_t>& oldFromNewCentroids,
36  std::vector<bool>& visited);
37 
38  double BaseCase(const size_t queryIndex, const size_t referenceIndex);
39 
40  double Score(const size_t queryIndex, TreeType& referenceNode);
41  double Score(TreeType& queryNode, TreeType& referenceNode);
42  double Rescore(const size_t queryIndex,
43  TreeType& referenceNode,
44  const double oldScore);
45  double Rescore(TreeType& queryNode,
46  TreeType& referenceNode,
47  const double oldScore);
48 
50 
51  TraversalInfoType& TraversalInfo() { return traversalInfo; }
52  const TraversalInfoType& TraversalInfo() const { return traversalInfo; }
53 
54  size_t BaseCases() const { return baseCases; }
55  size_t& BaseCases() { return baseCases; }
56 
57  size_t Scores() const { return scores; }
58  size_t& Scores() { return scores; }
59 
60  private:
61  const arma::mat& centroids;
62  const arma::mat& dataset;
63  arma::Row<size_t>& assignments;
64  arma::vec& upperBounds;
65  arma::vec& lowerBounds;
66  MetricType& metric;
67 
68  const std::vector<bool>& prunedPoints;
69 
70  const std::vector<size_t>& oldFromNewCentroids;
71 
72  std::vector<bool>& visited;
73 
74  size_t baseCases;
75  size_t scores;
76 
77  TraversalInfoType traversalInfo;
78 
81  size_t lastBaseCase;
82 };
83 
84 } // namespace kmeans
85 } // namespace mlpack
86 
87 #include "dual_tree_kmeans_rules_impl.hpp"
88 
89 #endif
const TraversalInfoType & TraversalInfo() const
Linear algebra utility functions, generally performed on matrices or vectors.
neighbor::NeighborSearchTraversalInfo< TreeType > TraversalInfoType
DualTreeKMeansRules(const arma::mat &centroids, const arma::mat &dataset, arma::Row< size_t > &assignments, arma::vec &upperBounds, arma::vec &lowerBounds, MetricType &metric, const std::vector< bool > &prunedPoints, const std::vector< size_t > &oldFromNewCentroids, std::vector< bool > &visited)
double BaseCase(const size_t queryIndex, const size_t referenceIndex)
Traversal information for NeighborSearch.
const std::vector< bool > & prunedPoints
double Score(const size_t queryIndex, TreeType &referenceNode)
double Rescore(const size_t queryIndex, TreeType &referenceNode, const double oldScore)
const std::vector< size_t > & oldFromNewCentroids