为什么PCA返回空的Coeff和得分?

问题描述

我正在将PCA应用于由2340个(不包括标签的)要素和2245个记录(2245X2340双矩阵)组成的数据集,以降低其高维性并选择至少50个要素以在Matlab上使用以下代码进行进一步的分类过程:

[coeff,score,~,mu] = pca(X);
save("coeff.mat","coeff");
reducedDimension = coeff(:,1:50);
reducedData = X * reducedDimension;

但是在断点的第一行,它只是返回系数并得分为空:

Workspace variables

并且到达第三行时出现此错误

Command window Error image

问题出在哪里? 其次,这种使用PCA(上面的代码)减少尺寸的方法正确吗?

数据集有点大,所以我只发布了一部分的屏幕截图:

enter image description here

解决方法

这是因为您的数据集中有 NAN。首先,您必须将 NAN 转换为数值,以便数据的数值行为保持不变。 为此,只需在应用 PCA 之前在代码中添加以下行:

data(isnan(data))=0;

这将为所有 NAN 值分配 0