best_binary_numeric_split.hpp
Go to the documentation of this file.
1 
12 #ifndef MLPACK_METHODS_DECISION_TREE_BEST_BINARY_NUMERIC_SPLIT_HPP
13 #define MLPACK_METHODS_DECISION_TREE_BEST_BINARY_NUMERIC_SPLIT_HPP
14 
15 #include <mlpack/prereqs.hpp>
16 
17 namespace mlpack {
18 namespace tree {
19 
26 template<typename FitnessFunction>
28 {
29  public:
30  // No extra info needed for split.
31  template<typename ElemType>
32  class AuxiliarySplitInfo { };
33 
53  template<bool UseWeights, typename VecType, typename WeightVecType>
54  static double SplitIfBetter(
55  const double bestGain,
56  const VecType& data,
57  const arma::Row<size_t>& labels,
58  const size_t numClasses,
59  const WeightVecType& weights,
60  const size_t minimumLeafSize,
61  const double minimumGainSplit,
62  arma::Col<typename VecType::elem_type>& classProbabilities,
64 
68  template<typename ElemType>
69  static size_t NumChildren(const arma::Col<ElemType>& /* classProbabilities */,
70  const AuxiliarySplitInfo<ElemType>& /* aux */)
71  {
72  return 2;
73  }
74 
82  template<typename ElemType>
83  static size_t CalculateDirection(
84  const ElemType& point,
85  const arma::Col<ElemType>& classProbabilities,
86  const AuxiliarySplitInfo<ElemType>& /* aux */);
87 };
88 
89 } // namespace tree
90 } // namespace mlpack
91 
92 // Include implementation.
93 #include "best_binary_numeric_split_impl.hpp"
94 
95 #endif
static double SplitIfBetter(const double bestGain, const VecType &data, const arma::Row< size_t > &labels, const size_t numClasses, const WeightVecType &weights, const size_t minimumLeafSize, const double minimumGainSplit, arma::Col< typename VecType::elem_type > &classProbabilities, AuxiliarySplitInfo< typename VecType::elem_type > &aux)
Check if we can split a node.
The BestBinaryNumericSplit is a splitting function for decision trees that will exhaustively search a...
.hpp
Definition: add_to_po.hpp:21
The core includes that mlpack expects; standard C++ includes and Armadillo.
static size_t CalculateDirection(const ElemType &point, const arma::Col< ElemType > &classProbabilities, const AuxiliarySplitInfo< ElemType > &)
Given a point, calculate which child it should go to (left or right).
static size_t NumChildren(const arma::Col< ElemType > &, const AuxiliarySplitInfo< ElemType > &)
Returns 2, since the binary split always has two children.