00001 00022 #ifndef __MLPACK_CORE_KERNELS_POLYNOMIAL_KERNEL_HPP 00023 #define __MLPACK_CORE_KERNELS_POLYNOMIAL_KERNEL_HPP 00024 00025 #include <mlpack/core.hpp> 00026 00027 namespace mlpack { 00028 namespace kernel { 00029 00038 class PolynomialKernel 00039 { 00040 public: 00048 PolynomialKernel(const double degree = 2.0, const double offset = 0.0) : 00049 degree(degree), 00050 offset(offset) 00051 { } 00052 00062 template<typename VecType> 00063 double Evaluate(const VecType& a, const VecType& b) const 00064 { 00065 return pow((arma::dot(a, b) + offset), degree); 00066 } 00067 00069 const double& Degree() const { return degree; } 00071 double& Degree() { return degree; } 00072 00074 const double& Offset() const { return offset; } 00076 double& Offset() { return offset; } 00077 00078 private: 00080 double degree; 00082 double offset; 00083 }; 00084 00085 }; // namespace kernel 00086 }; // namespace mlpack 00087 00088 #endif