我正在尝试使用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
是1x699
的字符标签(1-26)。trainingData
是699x900
的900维度数据,代表699个字符的图像数据。test
是225x900
的225个900维度的字符数据。
我希望将这些数据降维到225x10
,即10维度,但目前卡在了这一步。
回答:
协方差应该在你的trainingData
中实现:
X = bsxfun(@minus, trainingData, mean(trainingData,1)); covariancex = (X'*X)./(size(X,1)-1); [V D] = eigs(covariancex, 10); % 降至10维度Xtest = bsxfun(@minus, test, mean(trainingData,1)); pcatest = Xtest*V;