问题描述
我正在将PCA应用于由2340个(不包括标签的)要素和2245个记录(2245X2340双矩阵)组成的数据集,以降低其高维性并选择至少50个要素以在Matlab上使用以下代码进行进一步的分类过程:
[coeff,score,~,mu] = pca(X);
save("coeff.mat","coeff");
reducedDimension = coeff(:,1:50);
reducedData = X * reducedDimension;
但是在断点的第一行,它只是返回系数并得分为空:
并且到达第三行时出现此错误:
问题出在哪里? 其次,这种使用PCA(上面的代码)减少尺寸的方法正确吗?
解决方法
这是因为您的数据集中有 NAN。首先,您必须将 NAN 转换为数值,以便数据的数值行为保持不变。 为此,只需在应用 PCA 之前在代码中添加以下行:
data(isnan(data))=0;
这将为所有 NAN 值分配 0