我正在进行无监督分类。为此,我有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;