13 #ifndef MLPACK_METHODS_KDE_KDE_HPP
14 #define MLPACK_METHODS_KDE_KDE_HPP
48 static constexpr
double mcProb = 0.95;
76 typename MatType = arma::mat,
77 template<
typename TreeMetricType,
78 typename TreeStatType,
80 template<
typename RuleType>
class DualTreeTraversalType =
83 MatType>::template DualTreeTraverser,
84 template<
typename RuleType>
class SingleTreeTraversalType =
87 MatType>::template SingleTreeTraverser>
92 typedef TreeType<MetricType, kde::KDEStat, MatType>
Tree;
116 KernelType kernel = KernelType(),
118 MetricType metric = MetricType(),
162 void Train(MatType referenceSet);
174 void Train(
Tree* referenceTree, std::vector<size_t>* oldFromNewReferences);
190 void Evaluate(MatType querySet, arma::vec& estimations);
208 const std::vector<size_t>& oldFromNewQueries,
209 arma::vec& estimations);
221 void Evaluate(arma::vec& estimations);
224 const KernelType&
Kernel()
const {
return kernel; }
230 const MetricType&
Metric()
const {
return metric; }
273 void MCProb(
const double newProb);
294 template<
typename Archive>
295 void serialize(Archive& ar,
const unsigned int version);
308 std::vector<size_t>* oldFromNewReferences;
317 bool ownsReferenceTree;
332 size_t initialSampleSize;
345 static void CheckErrorValues(
const double relError,
const double absError);
348 static void RearrangeEstimations(
const std::vector<size_t>& oldFromNew,
349 arma::vec& estimations);
363 namespace serialization{
365 template<
typename KernelType,
368 template<
typename TreeMetricType,
369 typename TreeStatType,
370 typename TreeMatType>
class TreeType,
371 template<typename RuleType> class DualTreeTraversalType,
372 template<typename RuleType> class SingleTreeTraversalType>
373 struct version<mlpack::kde::KDE<KernelType,
377 DualTreeTraversalType,
378 SingleTreeTraversalType>>
381 typedef mpl::integral_c_tag
tag;
382 BOOST_STATIC_CONSTANT(
int, value = version::type::value);
383 BOOST_MPL_ASSERT((boost::mpl::less<boost::mpl::int_<1>,
384 boost::mpl::int_<256>>));
391 #include "kde_impl.hpp"
393 #endif // MLPACK_METHODS_KDE_KDE_HPP
KernelType & Kernel()
Modify the kernel.
static constexpr double relError
Relative error tolerance.
bool & MonteCarlo()
Modify whether Monte Carlo estimations are being used or not.
KDEMode
KDEMode represents the ways in which KDE algorithm can be executed.
static constexpr double mcBreakCoef
Monte Carlo break coefficient.
The core includes that mlpack expects; standard C++ includes and Armadillo.
KDE & operator=(KDE other)
Copy a KDE model.
double RelativeError() const
Get relative error tolerance.
Extra data for each node in the tree for the task of kernel density estimation.
KDE(const double relError=KDEDefaultParams::relError, const double absError=KDEDefaultParams::absError, KernelType kernel=KernelType(), const KDEMode mode=KDEDefaultParams::mode, MetricType metric=MetricType(), const bool monteCarlo=KDEDefaultParams::monteCarlo, const double mcProb=KDEDefaultParams::mcProb, const size_t initialSampleSize=KDEDefaultParams::initialSampleSize, const double mcEntryCoef=KDEDefaultParams::mcEntryCoef, const double mcBreakCoef=KDEDefaultParams::mcBreakCoef)
Initialize KDE object using custom instantiated Metric and Kernel objects.
bool OwnsReferenceTree() const
Check whether reference tree is owned by the KDE model.
size_t MCInitialSampleSize() const
Get Monte Carlo initial sample size.
KDEMode & Mode()
Modify the mode of KDE.
double MCEntryCoef() const
Get Monte Carlo entry coefficient.
TreeType< MetricType, kde::KDEStat, MatType > Tree
Convenience typedef.
void Train(MatType referenceSet)
Trains the KDE model.
static constexpr KDEMode mode
KDE algorithm mode.
MetricType & Metric()
Modify the metric.
static constexpr double absError
Absolute error tolerance.
void Evaluate(MatType querySet, arma::vec &estimations)
Estimate density of each point in the query set given the data of the reference set.
bool IsTrained() const
Check whether KDE model is trained or not.
The KDE class is a template class for performing Kernel Density Estimations.
static constexpr bool monteCarlo
Whether to use Monte Carlo estimations when possible.
const KernelType & Kernel() const
Get the kernel.
static constexpr size_t initialSampleSize
Initial sample size for Monte Carlo estimations.
static constexpr double mcEntryCoef
Monte Carlo entry coefficient.
KDEDefaultParams contains the default input parameter values for KDE.
static constexpr double mcProb
Probability of a Monte Carlo estimation to be bounded by the relative error tolerance.
~KDE()
Destroy the KDE object.
size_t & MCInitialSampleSize()
Modify Monte Carlo initial sample size.
The standard Gaussian kernel.
const MetricType & Metric() const
Get the metric.
KDEMode Mode() const
Get the mode of KDE.
bool MonteCarlo() const
Get whether Monte Carlo estimations are being used or not.
double MCProb() const
Get Monte Carlo probability of error being bounded by relative error.
BinarySpaceTree< MetricType, StatisticType, MatType, bound::HRectBound, MidpointSplit > KDTree
The standard midpoint-split kd-tree.
LMetric< 2, true > EuclideanDistance
The Euclidean (L2) distance.
double AbsoluteError() const
Get absolute error tolerance.
Tree * ReferenceTree()
Get the reference tree.
void serialize(Archive &ar, const unsigned int version)
Serialize the model.
double MCBreakCoef() const
Get Monte Carlo break coefficient.