我正在尝试从包含 63 个样本的 2000 个特征的数据中选择一个特征子集。现在我知道如何在 MATLAB 中进行 PCA。我使用了“pcacov”,它也返回了特征向量和特征值。但是,我不知道如何选择我想要的功能。我的意思是如果没有标记功能,我该如何选择我的功能?或者它们会以相同的顺序被退回?
问问题
3744 次
2 回答
8
PCA 不会告诉您哪些特征最重要,而是哪些特征组合保持最大差异。
PCA 所做的是以这样一种方式旋转您的数据集,即它在第一个维度上具有最大的方差,在第二个维度上具有最大的方差,依此类推。因此,当您将特征向量乘以前 N 个特征向量时,您所做的是旋转集合并保留前 N 个维度,以将您的向量转换为保持大部分方差的低维表示。
于 2011-04-29T20:50:27.917 回答
4
如何选择我的功能?
如果你这样称呼它
[pc,variances,explained] = pcacov(covx)
那么主成分是第一个返回参数中的向量,其方差与第二个返回参数中的方差相同。它们是对应的,并且从最重要到最不重要排序。
或者它们会以相同的顺序被退回?
如果函数帮助这么说,你可以假设这一点,否则假设这样是不安全的,你可以做类似的事情。
[varsorted,varsortedinds] = sort(variances,'descend');
pcsorted = pc(:,varsortedinds);
并且将按照从最重要到最不重要的顺序排列varsorted
。pcsorted
7 年后编辑:我在重新阅读这个问题时意识到我的答案实际上并没有回答这个问题。我认为要问的是对主要成分进行了排序。Don Reba 的回答是对所提出的实际问题的回答。我无法删除选定的答案。
于 2011-04-30T12:34:21.893 回答