28 template <
typename T,
typename V>
33 using RET =
decltype(std::declval<T>() + std::declval<V>());
57 template <
typename T,
typename V>
73 for (
size_t i = 0; i < x1.size(); i++) {
74 distance += pow(x1.at(i) - x2.at(i), 2);
106 template <
typename T,
typename V>
131 value += kernel->evaluate_kernel(x1, x2);
137 std::vector<std::shared_ptr<Kernel<T, V>>>
children;
144 template <
typename T,
typename V>
169 value *= kernel->k(x1, x2);
175 std::vector<std::shared_ptr<Kernel<T, V>>>
children;
182 template <
typename T,
typename V>
229 template <
typename T,
typename V>
280 return exp(-
_gamma * distance);
Composite kernel which on evaluation adds the evaluation results of its subkernels.
Definition kernel.h:107
void add(std::shared_ptr< Kernel< T, V > > kernel)
Function for adding another subkernel to the composite kernel.
Definition kernel.h:117
std::vector< std::shared_ptr< Kernel< T, V > > > children
Definition kernel.h:137
RET evaluate_kernel(std::vector< T > x1, std::vector< V > x2)
Function for evalualting the kernel.
Definition kernel.h:128
Composite kernel which on evaluation multiplies the evaluation results of its subkernels.
Definition kernel.h:145
RET evaluate_kernel(std::vector< T > x1, std::vector< V > x2)
Function for evalualting the kernel.
Definition kernel.h:166
void add(std::shared_ptr< Kernel< T, V > > kernel)
Function for adding another subkernel to the composite kernel.
Definition kernel.h:155
std::vector< std::shared_ptr< Kernel< T, V > > > children
Definition kernel.h:175
Kernel which always returns a constant value.
Definition kernel.h:183
const RET _f
Definition kernel.h:221
RET evaluate_kernel(std::vector< T > x1, std::vector< V > x2)
Function for evalualting the kernel.
Definition kernel.h:216
KernelConstant(const T f)
Constructor.
Definition kernel.h:198
KernelConstant()
Constructor. Initializes the kernels return value to 1.
Definition kernel.h:191
KernelConstant(const V f)
Constructor.
Definition kernel.h:205
Abstract parent class for kernel implementations.
Definition kernel.h:29
virtual ~Kernel()=default
Destructor.
virtual RET evaluate_kernel(std::vector< T > x1, std::vector< V > x2)=0
Function for evalualting the kernel for the points x1 and x2.
decltype(std::declval< T >()+std::declval< V >()) RET
Definition kernel.h:33
Implementation of Radial Basis Function kernel.
Definition kernel.h:230
RET calculate_distance(std::vector< T > x1, std::vector< V > x2) override
Function for calculating the distance used in the kernel (type of distance used can vary among kernel...
Definition kernel.h:267
const double _gamma
Definition kernel.h:285
RET evaluate_kernel(RET distance) override
Function for evalualting the kernel for a given distance.
Definition kernel.h:278
KernelRBF(const double gamma)
Constructor.
Definition kernel.h:240
RET evaluate_kernel(std::vector< T > x1, std::vector< V > x2) override
Function for evalualting the kernel.
Definition kernel.h:252
virtual RET _quadratic_distance(std::vector< T > x1, std::vector< V > x2)
Calculates the quadratic distance between two points x1 and x2.
Definition kernel.h:70
virtual RET calculate_distance(std::vector< T > x1, std::vector< V > x2)=0
Function for calculating the distance used in the kernel (type of distance used can vary among kernel...
virtual RET evaluate_kernel(RET distance)=0
Function for evalualting the kernel for a given distance.