我正在做无监督分类。为此,我有 n 个分类功能,我想使用 PCA 将数据投影到新的子空间,然后使用 PCA 的输出执行聚类。我写了以下代码:
for c=1:size(feature,1)
feature(c,:)=feature(c,:)-mean(feature);
end
DataCov=cov(feature); % covariance matrix
[PC,latent,explained] = pcacov(DataCov);
这给了我:
PC =
0.6706 0.7348 0.0965 0.0316 -0.0003 -0.0001
0.0009 -0.0060 0.0298 0.0378 0.8157 -0.5764
0.0391 -0.1448 0.5661 0.8091 -0.0406 0.0264
0.7403 -0.6543 -0.1461 -0.0505 0.0018 -0.0005
0.0003 -0.0020 0.0193 -0.0116 0.5768 0.8166
0.0264 -0.1047 0.8048 -0.5832 -0.0151 -0.0169
latent =
0.0116
0.0001
0.0000
0.0000
0.0000
0.0000
解释 =
98.8872 <-----
1.0445
0.0478
0.0205
0.0000
0.0000
解释表明,只有第一个分量(由 <-- 表示)真正对解释方差有很大贡献。
请回复,是否可以仅使用第一个组件创建新功能。???
以下是使用所有 Principle 组件为我提供的新功能集 feature_New。这是创建可以执行聚类的新功能集的正确方法吗:
feature_New= feature*PC;