mlpack
kernel_pca_impl.hpp
Go to the documentation of this file.
1 
14 #ifndef MLPACK_METHODS_KERNEL_PCA_KERNEL_PCA_IMPL_HPP
15 #define MLPACK_METHODS_KERNEL_PCA_KERNEL_PCA_IMPL_HPP
16 
17 // In case it hasn't already been included.
18 #include "kernel_pca.hpp"
19 
20 namespace mlpack {
21 namespace kpca {
22 
23 template <typename KernelType, typename KernelRule>
25  const bool centerTransformedData) :
26  kernel(kernel),
27  centerTransformedData(centerTransformedData)
28 { }
29 
31 template <typename KernelType, typename KernelRule>
33  arma::mat& transformedData,
34  arma::vec& eigval,
35  arma::mat& eigvec,
36  const size_t newDimension)
37 {
38  KernelRule::ApplyKernelMatrix(data, transformedData, eigval,
39  eigvec, newDimension, kernel);
40 
41  // Center the transformed data, if the user asked for it.
42  if (centerTransformedData)
43  {
44  arma::colvec transformedDataMean = arma::mean(transformedData, 1);
45  transformedData = transformedData - (transformedDataMean *
46  arma::ones<arma::rowvec>(transformedData.n_cols));
47  }
48 }
49 
51 template <typename KernelType, typename KernelRule>
53  arma::mat& transformedData,
54  arma::vec& eigval,
55  arma::mat& eigvec)
56 {
57  Apply(data, transformedData, eigval, eigvec, data.n_cols);
58 }
59 
61 template <typename KernelType, typename KernelRule>
63  arma::mat& transformedData,
64  arma::vec& eigVal)
65 {
66  arma::mat coeffs;
67  Apply(data, transformedData, eigVal, coeffs, data.n_cols);
68 }
69 
71 template <typename KernelType, typename KernelRule>
73  const size_t newDimension)
74 {
75  arma::mat coeffs;
76  arma::vec eigVal;
77 
78  Apply(data, data, eigVal, coeffs, newDimension);
79 
80  if (newDimension < coeffs.n_rows && newDimension > 0)
81  data.shed_rows(newDimension, data.n_rows - 1);
82 }
83 
84 } // namespace kpca
85 } // namespace mlpack
86 
87 #endif
KernelPCA(const KernelType kernel=KernelType(), const bool centerTransformedData=false)
Construct the KernelPCA object, optionally passing a kernel.
Definition: kernel_pca_impl.hpp:24
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
void Apply(const arma::mat &data, arma::mat &transformedData, arma::vec &eigval, arma::mat &eigvec, const size_t newDimension)
Apply Kernel Principal Components Analysis to the provided data set.
Definition: kernel_pca_impl.hpp:32