[mlpack-svn] r15990 - mlpack/trunk/src/mlpack/methods/kernel_pca

fastlab-svn at coffeetalk-1.cc.gatech.edu fastlab-svn at coffeetalk-1.cc.gatech.edu
Thu Oct 31 15:41:43 EDT 2013


Author: rcurtin
Date: Thu Oct 31 15:41:43 2013
New Revision: 15990

Log:
Add Epanechnikov kernel for kernel PCA.


Modified:
   mlpack/trunk/src/mlpack/methods/kernel_pca/kernel_pca_main.cpp

Modified: mlpack/trunk/src/mlpack/methods/kernel_pca/kernel_pca_main.cpp
==============================================================================
--- mlpack/trunk/src/mlpack/methods/kernel_pca/kernel_pca_main.cpp	(original)
+++ mlpack/trunk/src/mlpack/methods/kernel_pca/kernel_pca_main.cpp	Thu Oct 31 15:41:43 2013
@@ -5,12 +5,6 @@
  * Executable for Kernel PCA.
  */
 #include <mlpack/core.hpp>
-#include <mlpack/core/kernels/linear_kernel.hpp>
-#include <mlpack/core/kernels/gaussian_kernel.hpp>
-#include <mlpack/core/kernels/hyperbolic_tangent_kernel.hpp>
-#include <mlpack/core/kernels/laplacian_kernel.hpp>
-#include <mlpack/core/kernels/polynomial_kernel.hpp>
-#include <mlpack/core/kernels/cosine_distance.hpp>
 
 #include "kernel_pca.hpp"
 
@@ -47,6 +41,9 @@
     " * 'laplacian': Laplacian kernel; requires bandwidth:\n"
     "    K(x, y) = exp(-(|| x - y ||) / bandwidth)\n"
     "\n"
+    " * 'epanechnikov': Epanechnikov kernel; requires bandwidth:\n"
+    "    K(x, y) = max(0, 1 - || x - y ||^2 / bandwidth^2)\n"
+    "\n"
     " * 'cosine': cosine distance:\n"
     "    K(x, y) = 1 - (x^T y) / (|| x || * || y ||)\n"
     "\n"
@@ -142,6 +139,14 @@
     KernelPCA<LaplacianKernel> kpca(kernel, centerTransformedData);
     kpca.Apply(dataset, newDim);
   }
+  else if (kernelType == "epanechnikov")
+  {
+    const double bandwidth = CLI::GetParam<double>("bandwidth");
+
+    EpanechnikovKernel kernel(bandwidth);
+    KernelPCA<EpanechnikovKernel> kpca(kernel, centerTransformedData);
+    kpca.Apply(dataset, newDim);
+  }
   else if (kernelType == "cosine")
   {
     KernelPCA<CosineDistance> kpca(CosineDistance(), centerTransformedData);



More information about the mlpack-svn mailing list