12 #ifndef MLPACK_METHODS_KDE_MODEL_IMPL_HPP 13 #define MLPACK_METHODS_KDE_MODEL_IMPL_HPP 22 template<
typename KernelType,
23 template<
typename TreeMetricType,
24 typename TreeStatType,
25 typename TreeMatType>
class TreeType>
28 kde.Train(std::move(referenceSet));
32 template<
typename KernelType,
33 template<
typename TreeMetricType,
34 typename TreeStatType,
35 typename TreeMatType>
class TreeType>
36 void
KDEWrapper<KernelType, TreeType>::Evaluate(arma::mat&& querySet,
39 const size_t dimension = querySet.n_rows;
40 kde.
Evaluate(std::move(querySet), estimates);
41 KernelNormalizer::ApplyNormalizer<KernelType>(kde.Kernel(),
47 template<
typename KernelType,
48 template<
typename TreeMetricType,
49 typename TreeStatType,
50 typename TreeMatType>
class TreeType>
51 void
KDEWrapper<KernelType, TreeType>::Evaluate(arma::vec& estimates)
54 const size_t dimension = kde.ReferenceTree()->Dataset().n_rows;
55 KernelNormalizer::ApplyNormalizer<KernelType>(kde.Kernel(),
60 template<
template<
typename TreeMetricType,
61 typename TreeStatType,
62 typename TreeMatType>
class TreeType,
64 void SerializationHelper(Archive& ar,
66 const KDEModel::KernelTypes kernelType)
70 case KDEModel::GAUSSIAN_KERNEL:
74 TreeType
>&>(*kdeModel);
75 ar(CEREAL_NVP(typedModel));
78 case KDEModel::EPANECHNIKOV_KERNEL:
82 TreeType
>&>(*kdeModel);
83 ar(CEREAL_NVP(typedModel));
86 case KDEModel::LAPLACIAN_KERNEL:
90 TreeType
>&>(*kdeModel);
91 ar(CEREAL_NVP(typedModel));
94 case KDEModel::SPHERICAL_KERNEL:
98 TreeType
>&>(*kdeModel);
99 ar(CEREAL_NVP(typedModel));
102 case KDEModel::TRIANGULAR_KERNEL:
106 TreeType
>&>(*kdeModel);
107 ar(CEREAL_NVP(typedModel));
114 template<
typename Archive>
117 ar(CEREAL_NVP(bandwidth));
118 ar(CEREAL_NVP(relError));
119 ar(CEREAL_NVP(absError));
120 ar(CEREAL_NVP(kernelType));
121 ar(CEREAL_NVP(treeType));
122 ar(CEREAL_NVP(monteCarlo));
123 ar(CEREAL_NVP(mcProb));
124 ar(CEREAL_NVP(initialSampleSize));
125 ar(CEREAL_NVP(mcEntryCoef));
126 ar(CEREAL_NVP(mcBreakCoef));
128 if (cereal::is_loading<Archive>())
137 if (cereal::is_loading<Archive>())
144 SerializationHelper<tree::KDTree>(ar, kdeModel, kernelType);
148 SerializationHelper<tree::BallTree>(ar, kdeModel, kernelType);
152 SerializationHelper<tree::StandardCoverTree>(ar, kdeModel, kernelType);
156 SerializationHelper<tree::Octree>(ar, kdeModel, kernelType);
160 SerializationHelper<tree::RTree>(ar, kdeModel, kernelType);
static constexpr bool monteCarlo
Whether to use Monte Carlo estimations when possible.
Definition: kde.hpp:44
static constexpr double mcProb
Probability of a Monte Carlo estimation to be bounded by the relative error tolerance.
Definition: kde.hpp:48
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
The trivially simple triangular kernel, defined by.
Definition: triangular_kernel.hpp:30
virtual void Evaluate(arma::mat &&querySet, arma::vec &estimates)
Perform bichromatic KDE (i.e. KDE with a separate query set).
Definition: kde_model_impl.hpp:36
KDEWrapper is a wrapper class for all KDE types supported by KDEModel.
Definition: kde_model.hpp:138
static constexpr double mcEntryCoef
Monte Carlo entry coefficient.
Definition: kde.hpp:54
KDEWrapperBase is a base wrapper class for holding all KDE types supported by KDEModel.
Definition: kde_model.hpp:71
Definition: hmm_train_main.cpp:300
The Epanechnikov kernel, defined as.
Definition: epanechnikov_kernel.hpp:30
static constexpr double mcBreakCoef
Monte Carlo break coefficient.
Definition: kde.hpp:57
The spherical kernel, which is 1 when the distance between the two argument points is less than or eq...
Definition: spherical_kernel.hpp:23
The standard Laplacian kernel.
Definition: laplacian_kernel.hpp:30
void serialize(Archive &ar, const uint32_t version)
Serialize the KDE model.
Definition: kde_model_impl.hpp:115
The standard Gaussian kernel.
Definition: gaussian_kernel.hpp:34
static constexpr size_t initialSampleSize
Initial sample size for Monte Carlo estimations.
Definition: kde.hpp:51