Xmipp  v3.23.11-Nereus
Public Member Functions | Public Attributes | List of all members

#include <kernelPCA.h>

Inheritance diagram for KernelPCA:
Inheritance graph
[legend]
Collaboration diagram for KernelPCA:
Collaboration graph
[legend]

Public Member Functions

void setSpecificParameters (double sigma=1.0)
 Set specific parameters. More...
 
void reduceDimensionality ()
 Reduce dimensionality. More...
 
- Public Member Functions inherited from DimRedAlgorithm
 DimRedAlgorithm ()
 Empty constructor. More...
 
void setInputData (Matrix2D< double > &X)
 Set input data. More...
 
void setOutputDimensionality (size_t outputDim)
 Set output dimensionality. More...
 
const Matrix2D< double > & getReducedData ()
 Get reduced data. More...
 

Public Attributes

double sigma
 
- Public Attributes inherited from DimRedAlgorithm
Matrix2D< double > * X
 Pointer to input data. More...
 
size_t outputDim
 Output dim. More...
 
Matrix2D< double > Y
 Output data. More...
 
DimRedDistance2 distance
 Distance function. More...
 
FileName fnMapping
 Save mapping. More...
 

Detailed Description

Class for making a Kernel PCA dimensionality reduction

Definition at line 17 of file kernelPCA.h.

Member Function Documentation

◆ reduceDimensionality()

void KernelPCA::reduceDimensionality ( )
virtual

Reduce dimensionality.

Implements DimRedAlgorithm.

Definition at line 13 of file kernelPCA.cpp.

13  {
14  // Compute Gram matrix
16  computeDistance(*X, D2, distance, false);
18 
19  // Normalize it
20  Matrix1D<double> mean_i;
21  D2.rowSum(mean_i);
22  mean_i/=MAT_XSIZE(D2);
23  double mean=mean_i.computeMean();
25  MAT_ELEM(D2,i,j)+=mean-VEC_ELEM(mean_i,i)-VEC_ELEM(mean_i,j);
26 
27  // Compute the largest eigenvalues
29  firstEigs(D2,outputDim,lambda,Y);
30 
31  // Readjust variances
33  VEC_ELEM(lambda,i)=sqrt(VEC_ELEM(lambda,i));
35  MAT_ELEM(Y,i,j)*=VEC_ELEM(lambda,j);
36 }
#define FOR_ALL_ELEMENTS_IN_MATRIX2D(m)
Definition: matrix2d.h:104
#define VEC_ELEM(v, i)
Definition: matrix1d.h:245
void rowSum(Matrix1D< T > &sum) const
Definition: matrix2d.cpp:779
void computeSimilarityMatrix(Matrix2D< double > &D2, double sigma, bool skipZeros, bool normalize)
Matrix2D< double > Y
Output data.
Definition: dimred_tools.h:147
void computeDistance(const Matrix2D< double > &X, Matrix2D< double > &distance, DimRedDistance2 f, bool computeSqrt)
void sqrt(Image< double > &op)
Matrix2D< double > * X
Pointer to input data.
Definition: dimred_tools.h:141
#define i
size_t outputDim
Output dim.
Definition: dimred_tools.h:144
#define MAT_ELEM(m, i, j)
Definition: matrix2d.h:116
#define FOR_ALL_ELEMENTS_IN_MATRIX1D(v)
Definition: matrix1d.h:72
double computeMean() const
Definition: matrix1d.cpp:546
double * lambda
void firstEigs(const Matrix2D< double > &A, size_t M, Matrix1D< double > &D, Matrix2D< double > &P, bool Pneeded)
Definition: matrix2d.cpp:284
#define j
DimRedDistance2 distance
Distance function.
Definition: dimred_tools.h:150
#define MAT_XSIZE(m)
Definition: matrix2d.h:120
double sigma
Definition: kernelPCA.h:20

◆ setSpecificParameters()

void KernelPCA::setSpecificParameters ( double  sigma = 1.0)

Set specific parameters.

Definition at line 9 of file kernelPCA.cpp.

9  {
10  this->sigma = sigma;
11 }
double sigma
Definition: kernelPCA.h:20

Member Data Documentation

◆ sigma

double KernelPCA::sigma

Definition at line 20 of file kernelPCA.h.


The documentation for this class was generated from the following files: