14 #ifndef MLPACK_METHODS_KERNEL_PCA_KERNEL_PCA_IMPL_HPP 15 #define MLPACK_METHODS_KERNEL_PCA_KERNEL_PCA_IMPL_HPP 23 template <
typename KernelType,
typename KernelRule>
25 const bool centerTransformedData) :
27 centerTransformedData(centerTransformedData)
31 template <
typename KernelType,
typename KernelRule>
33 arma::mat& transformedData,
36 const size_t newDimension)
38 KernelRule::ApplyKernelMatrix(data, transformedData, eigval,
39 eigvec, newDimension, kernel);
42 if (centerTransformedData)
44 arma::colvec transformedDataMean = arma::mean(transformedData, 1);
45 transformedData = transformedData - (transformedDataMean *
46 arma::ones<arma::rowvec>(transformedData.n_cols));
51 template <
typename KernelType,
typename KernelRule>
53 arma::mat& transformedData,
57 Apply(data, transformedData, eigval, eigvec, data.n_cols);
61 template <
typename KernelType,
typename KernelRule>
63 arma::mat& transformedData,
67 Apply(data, transformedData, eigVal, coeffs, data.n_cols);
71 template <
typename KernelType,
typename KernelRule>
73 const size_t newDimension)
78 Apply(data, data, eigVal, coeffs, newDimension);
80 if (newDimension < coeffs.n_rows && newDimension > 0)
81 data.shed_rows(newDimension, data.n_rows - 1);
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