PCA降维

use*_*936 5 matlab machine-learning linear-algebra pca dimensionality-reduction

我正在尝试执行PCA,将900维度减少到10.到目前为止,我有:

covariancex = cov(labels);
[V, d] = eigs(covariancex, 40);

pcatrain = (trainingData - repmat(mean(traingData), 699, 1)) * V;
pcatest = (test - repmat(mean(trainingData), 225, 1)) * V;
Run Code Online (Sandbox Code Playgroud)

labels字符的1x699标签在哪里(1-26).trainingData是699x900,900维数据,699个字符的图像.test是225x900,225 900维度字符.

基本上我想把它减少到225x10,即10维度,但在这一点上有点卡住了.

len*_*310 8

协方差应该在你的实现trainingData:

X = bsxfun(@minus, trainingData, mean(trainingData,1));           
covariancex = (X'*X)./(size(X,1)-1);                 

[V D] = eigs(covariancex, 10);   % reduce to 10 dimension

Xtest = bsxfun(@minus, test, mean(trainingData,1));  
pcatest = Xtest*V;
Run Code Online (Sandbox Code Playgroud)