如何在将数据插入PCA之前变白我的数据

时间:2018-11-26 03:23:33

标签: matlab pca

我正在将PCA应用于我提取的某些ECG功能。我找到了一些代码,并从Matlab网站学到了应用PCA的代码。但是,我想在将PCA应用于数据之前先将其数据变白。我的数据是一个矩阵(125 x 9),具有9个功能和125个测试。我的矩阵名称是等级。 我有两个代码块:PCA代码和美白代码。我的PCA代码不包含美白功能,但我希望通过回答这个问题可以实现。

美白代码

我从矩阵中减去每一列的平均值,如下所示:

mean_ratings=mean(ratings); %get mean of each column
ratings=ratings-repmat(mean_ratings, 375,1); %subtract mean of each
%column from each element of the column

我有点,但是在此之后该怎么做。我按照示例代码计算了enter image description here

sigma = ratings * ratings' / size(ratings, 2); %calculate the value of sigma
[U,S,V] = svd(sigma); %get S value and eigen vectors

xPCAwhite = diag(1./sqrt(diag(S) + epsilon)) * U' * ratings; %calculate
%whitened data

PCA代码

我通过使用以下代码来执行PCA,而无需考虑增白:

C = corr(ratings,ratings);
w=1./var(ratings);
[wcoeff,score,latent,tsquared,explained] = pca(ratings,...
'VariableWeights',w);
coefforth = inv(diag(std(ratings)))*wcoeff;
cscores = zscore(ratings)*coefforth;
figure()
plot(score(:,1),score(:,2),'+')
xlabel('1st Principal Component')
ylabel('2nd Principal Component')

现在我的问题是,我只是插入变量'xPCAwhite'而不是PCA代码的等级吗?

0 个答案:

没有答案