This document discusses principal component analysis (PCA), including the theory behind it and toolkits for implementing it. The theory section explains how PCA transforms correlated variables into uncorrelated principal components to perform dimensionality reduction. It describes minimizing squared error to find the principal components, which are the eigenvectors of the covariance matrix. The document lists toolkits for PCA in languages like C, Java, Perl and MATLAB and provides code examples.