MLPACK
1.0.4
|
00001 00022 #ifndef __MLPACK_CORE_TREE_MRKD_STATISTIC_HPP 00023 #define __MLPACK_CORE_TREE_MRKD_STATISTIC_HPP 00024 00025 #include <mlpack/core.hpp> 00026 00027 namespace mlpack { 00028 namespace tree { 00029 00033 class MRKDStatistic 00034 { 00035 public: 00037 MRKDStatistic(); 00038 00046 template<typename MatType> 00047 MRKDStatistic(const MatType& dataset, 00048 const size_t begin, 00049 const size_t count); 00050 00061 template<typename MatType> 00062 MRKDStatistic(const MatType& dataset, 00063 const size_t begin, 00064 const size_t count, 00065 MRKDStatistic& leftStat, 00066 MRKDStatistic& rightStat); 00067 00071 std::string ToString() const; 00072 00074 size_t Begin() const { return begin; } 00076 size_t& Begin() { return begin; } 00077 00079 size_t Count() const { return count; } 00081 size_t& Count() { return count; } 00082 00084 const arma::colvec& CenterOfMass() const { return centerOfMass; } 00086 arma::colvec& CenterOfMass() { return centerOfMass; } 00087 00089 size_t DominatingCentroid() const { return dominatingCentroid; } 00091 size_t& DominatingCentroid() { return dominatingCentroid; } 00092 00094 const std::vector<size_t>& Whitelist() const { return whitelist; } 00096 std::vector<size_t>& Whitelist() { return whitelist; } 00097 00098 private: 00100 const arma::mat* dataset; 00102 size_t begin; 00104 size_t count; 00106 const MRKDStatistic* leftStat; 00108 const MRKDStatistic* rightStat; 00110 const MRKDStatistic* parentStat; 00111 00112 // Computed statistics. 00114 arma::colvec centerOfMass; 00116 double sumOfSquaredNorms; 00117 00118 // There may be a better place to store this -- HRectBound? 00120 size_t dominatingCentroid; 00121 00123 std::vector<size_t> whitelist; 00125 bool isWhitelistValid; 00126 }; 00127 00128 }; // namespace tree 00129 }; // namespace mlpack 00130 00131 // Include implementation. 00132 #include "mrkd_statistic_impl.hpp" 00133 00134 #endif // __MLPACK_CORE_TREE_MRKD_STATISTIC_HPP