[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