13 #ifndef MLPACK_CORE_TREE_BINARY_SPACE_TREE_UB_TREE_SPLIT_HPP 14 #define MLPACK_CORE_TREE_BINARY_SPACE_TREE_UB_TREE_SPLIT_HPP 17 #include "../address.hpp" 28 template<
typename BoundType,
typename MatType = arma::mat>
33 typedef typename std::conditional<
sizeof(
typename MatType::elem_type) * CHAR_BIT <= 32,
35 uint64_t>::type AddressElemType;
41 std::vector<std::pair<arma::Col<AddressElemType>,
size_t>>* addresses;
55 bool SplitNode(BoundType& bound,
59 SplitInfo& splitInfo);
73 const SplitInfo& splitInfo);
90 const SplitInfo& splitInfo,
91 std::vector<size_t>& oldFromNew);
95 std::vector<std::pair<arma::Col<AddressElemType>,
size_t>> addresses;
102 void InitializeAddresses(
const MatType& data);
105 static bool ComparePair(
106 const std::pair<arma::Col<AddressElemType>,
size_t>& p1,
107 const std::pair<arma::Col<AddressElemType>,
size_t>& p2)
117 #include "ub_tree_split_impl.hpp" Linear algebra utility functions, generally performed on matrices or vectors.
The core includes that mlpack expects; standard C++ includes and Armadillo.
size_t PerformSplit(MatType &data, const size_t begin, const size_t count, const typename SplitType::SplitInfo &splitInfo)
This function implements the default split behavior i.e.
Split a node into two parts according to the median address of points contained in the node...
int CompareAddresses(const AddressType1 &addr1, const AddressType2 &addr2)
Compare two addresses.