我正在尝试执行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
标签。 trainingData
是699x900
,是699个字符的图像的900维数据。 test
是225x900
,是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;