12#ifndef MLPACK_CORE_TREE_SPILL_TREE_HYPERPLANE_HPP
13#define MLPACK_CORE_TREE_SPILL_TREE_HYPERPLANE_HPP
29template<
typename BoundT,
typename ProjVectorT>
70 template<
typename VecType>
74 if (splitVal == DBL_MAX)
76 return projVect.Project(point) - splitVal;
85 template<
typename VecType>
86 bool Left(
const VecType& point,
98 template<
typename VecType>
99 bool Right(
const VecType& point,
112 if (splitVal == DBL_MAX)
114 return projVect.Project(bound).Hi() <= splitVal;
124 if (splitVal == DBL_MAX)
126 return projVect.Project(bound).Lo() > splitVal;
132 template<
typename Archive>
135 ar & BOOST_SERIALIZATION_NVP(projVect);
136 ar & BOOST_SERIALIZATION_NVP(splitVal);
143template<
typename MetricType>
150template<
typename MetricType>
AxisParallelProjVector defines an axis-parallel projection vector.
HyperplaneBase defines a splitting hyperplane based on a projection vector and projection value.
bool Right(const VecType &point, typename std::enable_if_t< IsVector< VecType >::value > *=0) const
Determine if the given point is to the right of the hyperplane, this means if the projection over the...
HyperplaneBase(const ProjVectorType &projVect, double splitVal)
Create the hyperplane with the specified projection vector and split value.
double Project(const VecType &point, typename std::enable_if_t< IsVector< VecType >::value > *=0) const
Project the given point on the projection vector and subtract the split value.
HyperplaneBase()
Empty Constructor.
bool Right(const BoundType &bound) const
Determine if the given bound is to the right of the hyperplane.
ProjVectorT ProjVectorType
Useful typedef for the projection vector type.
bool Left(const BoundType &bound) const
Determine if the given bound is to the left of the hyperplane.
bool Left(const VecType &point, typename std::enable_if_t< IsVector< VecType >::value > *=0) const
Determine if the given point is to the left of the hyperplane, this means if the projection over the ...
BoundT BoundType
Useful typedef for the bound type.
void serialize(Archive &ar, const unsigned int)
Serialization.
ProjVector defines a general projection vector (not necessarily axis-parallel).
Linear algebra utility functions, generally performed on matrices or vectors.
typename enable_if< B, T >::type enable_if_t
The core includes that mlpack expects; standard C++ includes and Armadillo.
If value == true, then VecType is some sort of Armadillo vector or subview.