mlpack  master
polynomial_kernel.hpp
Go to the documentation of this file.
1 
12 #ifndef MLPACK_CORE_KERNELS_POLYNOMIAL_KERNEL_HPP
13 #define MLPACK_CORE_KERNELS_POLYNOMIAL_KERNEL_HPP
14 
15 #include <mlpack/prereqs.hpp>
16 
17 namespace mlpack {
18 namespace kernel {
19 
29 {
30  public:
38  PolynomialKernel(const double degree = 2.0, const double offset = 0.0) :
39  degree(degree),
40  offset(offset)
41  { }
42 
54  template<typename VecTypeA, typename VecTypeB>
55  double Evaluate(const VecTypeA& a, const VecTypeB& b) const
56  {
57  return pow((arma::dot(a, b) + offset), degree);
58  }
59 
61  const double& Degree() const { return degree; }
63  double& Degree() { return degree; }
64 
66  const double& Offset() const { return offset; }
68  double& Offset() { return offset; }
69 
71  template<typename Archive>
72  void Serialize(Archive& ar, const unsigned int /* version */)
73  {
74  ar & data::CreateNVP(degree, "degree");
75  ar & data::CreateNVP(offset, "offset");
76  }
77 
78  private:
80  double degree;
82  double offset;
83 };
84 
85 } // namespace kernel
86 } // namespace mlpack
87 
88 #endif
double degree
The degree of the polynomial.
PolynomialKernel(const double degree=2.0, const double offset=0.0)
Construct the Polynomial Kernel with the given offset and degree.
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: binarize.hpp:18
double & Offset()
Modify the offset of the dot product of the arguments.
The core includes that mlpack expects; standard C++ includes and Armadillo.
FirstShim< T > CreateNVP(T &t, const std::string &name, typename std::enable_if_t< HasSerialize< T >::value > *=0)
Call this function to produce a name-value pair; this is similar to BOOST_SERIALIZATION_NVP(), but should be used for types that have a Serialize() function (or contain a type that has a Serialize() function) instead of a serialize() function.
const double & Offset() const
Get the offset of the dot product of the arguments.
const double & Degree() const
Get the degree of the polynomial.
double offset
The offset of the dot product of the arguments.
void Serialize(Archive &ar, const unsigned int)
Serialize the kernel.
The simple polynomial kernel.
double & Degree()
Modify the degree of the polynomial.
double Evaluate(const VecTypeA &a, const VecTypeB &b) const
Simple evaluation of the dot product.