我有一个大小为[4096 x 180]的特征向量,其中180是样本数,4096是每个样本的特征向量长度。
我想使用PCA降低数据的维度。
我尝试使用MATLAB [V U]=pca(X)
的内置pca函数,并按X_rec= U(:, 1:n)*V(:, 1:n)'
重建数据,n
是我选择的维度。这将返回4096 x 180的矩阵。
现在我有3个问题:
n
设为200时,它会在矩阵尺寸增加时产生错误,这让我假设我们不能减小尺寸小于样本尺寸。这是真的吗?我必须使用缩小尺寸特征集进行进一步分类。
如果有人能为此提供详细的pca代码详细解释,我将不胜感激。我看过很多地方,但我的困惑仍然存在。
答案 0 :(得分:3)
您可能需要参考Matlab example来分析城市数据。
以下是一些简化的代码:
load cities;
[~, pca_scores, ~, ~, var_explained] = pca(ratings);
此处,pca_scores
是pca组件,其中var_explained
中的每个组件各自有差异。运行pca
后,您无需进行任何显式乘法运算。 Matlab将直接为您提供组件。
在您的情况下,请考虑数据X
是4096-by-180
矩阵,即您拥有4096
个样本和180
个功能。您的目标是降低维度,以便拥有p
个功能,其中p < 180
。在Matlab中,您只需运行以下命令,
p = 100;
[~, pca_scores, ~, ~, var_explained] = pca(X, 'NumComponents', p);
pca_scores
将是4096-by-p
矩阵,var_explained
将是长度为p
的向量。
回答你的问题:
pca_scores
是缩减尺寸数据。 var_explained
向量来做出此决定。通常,您希望保留约99%的功能差异。您可以阅读有关此here的更多信息。