# pcafit

Principal Component Analysis.

## Syntax

parameters = pcafit(X)

parameters = pcafit(X,options)

## Inputs

X
Training data.
Type: double
Dimension: vector | matrix
options
Type: struct
n_components
Number of components to keep. If n_components is not set, all components are kept: min(n_samples, n_features).
If n_components is between 0 and 1 (exclusive) and svd_solver = 'full', number of components is selected such that the amount of variance that needs to be explained is greater than the percentage specified by n_components.
If svd_solver = 'arpack', the number of components must be strictly less than the min(n_samples, n_features). So n_components will be min(n_samples, n_features) – 1.
Type: integer
Dimension: scalar
svd_solver
'auto' (default): solver is selected by a default policy based on dimension of X and n_components. If the input data is larger than 500x500 and the number of components to extract is lower than 80% of the smallest dimension of the data, then the more efficient 'randomized' method is enabled. Otherwise exact full SVD is computed and optionally truncated afterwards.
'full': runs exact full SVD calling the standard LAPACK solver and selects the components by postprocessing.
'arpack': runs SVD truncated to n_components calling ARPACK solver. It requires strictly that n_components is between 0 and min(n_samples, n_features).
'randomized': runs randomized SVD by the method of Halko et al.
Type: char
Dimension: string
tol
Tolerance for singular values computed by svd_solver = 'arpack' (default: 0).
Type: double
Dimension: scalar
iterated_power
Number of iterations for the power method computed by svd_solver = 'randomized'. Must be of range [0, infinity). If not set, it is computed automatically.
Type: integer
Dimension: scalar
random_state
Determines random number generation for svd_solver = 'arpack' or 'randomized'.
Type: integer
Dimension: scalar

## Outputs

parameters
Contains all the values passed to pcafit method as options. Additionally it has below key-value pairs.
Type: struct
components
Principal axes in feature space, representing the directions of maximum variance in the data. The components are sorted by explained_variance.
Type: double
Dimension: matrix
explained_variance
Amount of variance explained by each of the selected components. It is equal to n_components largest eigenvalues of the covariance matrix of X.
Type: double
Dimension: vector
explained_variance_ratio
Percentage of variance explained by each of the selected components. If n_components is not set, then all components are stored and the sum of the ratios is equal to 1.0.
Type: double
Dimension: vector
singular_values
The singular values corresponding to each of the selected components. The singular values are equal to the 2-norms of the n_components variable in the lower-dimensional space.
Type: double
Dimension: vector
mean
Per feature empirical mean, estimated from the training set.
Type: double
Dimension: vector
n_components
Estimated number of components when, n_components is set between 0 and 1 while fitting with svd_solver = 'full'.
Type: integer
Dimension: scalar

## Example

Usage of pcafit with options

X = [-1, -1; -2, -1; -3, -2; 1, 1; 2, 1; 3, 2];
options = struct;
options.n_components = 2;
parameters = pcafit(X, options);

> parameters
parameters = struct [
components: [Matrix] 2 x 2
-0.83849  -0.54491
0.54491  -0.83849
explained_variance: [Matrix] 1 x 2
7.93954  0.06046
explained_variance_ratio: [Matrix] 1 x 2
0.99244  0.00756
]