mlpack 3.4.2
epanechnikov_kernel.hpp
Go to the documentation of this file.
1
12#ifndef MLPACK_CORE_KERNELS_EPANECHNIKOV_KERNEL_HPP
13#define MLPACK_CORE_KERNELS_EPANECHNIKOV_KERNEL_HPP
14
15#include <mlpack/prereqs.hpp>
17
18namespace mlpack {
19namespace kernel {
20
31{
32 public:
38 EpanechnikovKernel(const double bandwidth = 1.0) :
39 bandwidth(bandwidth),
40 inverseBandwidthSquared(1.0 / (bandwidth * bandwidth))
41 { }
42
51 template<typename VecTypeA, typename VecTypeB>
52 double Evaluate(const VecTypeA& a, const VecTypeB& b) const;
53
58 double Evaluate(const double distance) const;
59
65 double Gradient(const double distance) const;
66
72 double GradientForSquaredDistance(const double distanceSquared) const;
82 template<typename VecTypeA, typename VecTypeB>
83 double ConvolutionIntegral(const VecTypeA& a, const VecTypeB& b);
84
90 double Normalizer(const size_t dimension);
91
95 template<typename Archive>
96 void serialize(Archive& ar, const unsigned int version);
97
98 private:
100 double bandwidth;
102 double inverseBandwidthSquared;
103};
104
106template<>
108{
109 public:
111 static const bool IsNormalized = true;
113 static const bool UsesSquaredDistance = true;
114};
115
116} // namespace kernel
117} // namespace mlpack
118
119// Include implementation.
120#include "epanechnikov_kernel_impl.hpp"
121
122#endif
The Epanechnikov kernel, defined as.
double Evaluate(const double distance) const
Evaluate the Epanechnikov kernel given that the distance between the two input points is known.
void serialize(Archive &ar, const unsigned int version)
Serialize the kernel.
double Evaluate(const VecTypeA &a, const VecTypeB &b) const
Evaluate the Epanechnikov kernel on the given two inputs.
double Normalizer(const size_t dimension)
Compute the normalizer of this Epanechnikov kernel for the given dimension.
double GradientForSquaredDistance(const double distanceSquared) const
Evaluate the Gradient of Epanechnikov kernel given that the squared distance between the two input po...
double Gradient(const double distance) const
Evaluate the Gradient of Epanechnikov kernel given that the distance between the two input points is ...
EpanechnikovKernel(const double bandwidth=1.0)
Instantiate the Epanechnikov kernel with the given bandwidth (default 1.0).
double ConvolutionIntegral(const VecTypeA &a, const VecTypeB &b)
Obtains the convolution integral [integral of K(||x-a||) K(||b-x||) dx] for the two vectors.
This is a template class that can provide information about various kernels.
static const bool UsesSquaredDistance
If true, then the kernel include a squared distance, ||x - y||^2 .
static const bool IsNormalized
If true, then the kernel is normalized: K(x, x) = K(y, y) = 1 for all x.
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
The core includes that mlpack expects; standard C++ includes and Armadillo.