我正在尝试执行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;

其中labels是字符(1-26)的1x699标签。 trainingData699x900,是699个字符的图像的900维数据。 test225x900,是225900个维字符。

基本上我想将其减少到225x10,即10个维度,但此时有点卡住了。

最佳答案

协方差应该在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;

10-06 09:10