14 #ifndef MLPACK_CORE_KERNELS_GAUSSIAN_KERNEL_HPP 15 #define MLPACK_CORE_KERNELS_GAUSSIAN_KERNEL_HPP 50 gamma(-0.5 * pow(bandwidth, -2.0))
64 template<
typename VecTypeA,
typename VecTypeB>
65 double Evaluate(
const VecTypeA& a,
const VecTypeB& b)
const 81 return exp(gamma * std::pow(t, 2.0));
93 return 2 * t * gamma * exp(gamma * std::pow(t, 2.0));
105 return gamma * exp(gamma * t);
116 return pow(sqrt(2.0 * M_PI) * bandwidth, (
double) dimension);
126 template<
typename VecTypeA,
typename VecTypeB>
130 2.0)) / (
Normalizer(a.n_rows) * pow(2.0, (
double) a.n_rows / 2.0));
141 this->bandwidth = bandwidth;
142 this->gamma = -0.5 * pow(bandwidth, -2.0);
146 double Gamma()
const {
return gamma; }
149 template<
typename Archive>
152 ar(CEREAL_NVP(bandwidth));
153 ar(CEREAL_NVP(gamma));
171 static const bool IsNormalized =
true;
173 static const bool UsesSquaredDistance =
true;
GaussianKernel()
Default constructor; sets bandwidth to 1.0.
Definition: gaussian_kernel.hpp:40
double ConvolutionIntegral(const VecTypeA &a, const VecTypeB &b)
Obtain a convolution integral of the Gaussian kernel.
Definition: gaussian_kernel.hpp:127
This is a template class that can provide information about various kernels.
Definition: kernel_traits.hpp:27
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
double Gamma() const
Get the precalculated constant.
Definition: gaussian_kernel.hpp:146
The core includes that mlpack expects; standard C++ includes and Armadillo.
void Bandwidth(const double bandwidth)
Modify the bandwidth.
Definition: gaussian_kernel.hpp:139
void serialize(Archive &ar, const uint32_t)
Serialize the kernel.
Definition: gaussian_kernel.hpp:150
static VecTypeA::elem_type Evaluate(const VecTypeA &a, const VecTypeB &b)
Computes the distance between two points.
Definition: lmetric_impl.hpp:24
double Evaluate(const double t) const
Evaluation of the Gaussian kernel given the distance between two points.
Definition: gaussian_kernel.hpp:78
GaussianKernel(const double bandwidth)
Construct the Gaussian kernel with a custom bandwidth.
Definition: gaussian_kernel.hpp:48
double GradientForSquaredDistance(const double t) const
Evaluation of the gradient of Gaussian kernel given the squared distance between two points...
Definition: gaussian_kernel.hpp:104
double Normalizer(const size_t dimension)
Obtain the normalization constant of the Gaussian kernel.
Definition: gaussian_kernel.hpp:114
The standard Gaussian kernel.
Definition: gaussian_kernel.hpp:34
double Bandwidth() const
Get the bandwidth.
Definition: gaussian_kernel.hpp:135
double Evaluate(const VecTypeA &a, const VecTypeB &b) const
Evaluation of the Gaussian kernel.
Definition: gaussian_kernel.hpp:65
double Gradient(const double t) const
Evaluation of the gradient of Gaussian kernel given the distance between two points.
Definition: gaussian_kernel.hpp:92