5

我有一个庞大的数据集 (32000*2500) 需要用于训练。这对我的分类器来说似乎太多了,所以我决定阅读一些降维内容,特别是 PCA。

据我了解,PCA 选择当前数据并将它们重新绘制在另一个 (x,y) 域/尺度上。这些新坐标没有任何意义,只是重新排列数据以提供一个轴的最大变化。在这些新系数之后,我可以放弃cooeff具有最小变化的系数。

现在我正在尝试在 MatLab 中实现这一点,并且在提供的输出方面遇到了问题。MatLab 始终将行视为观察值,将列视为变量。所以我对pca函数的输入将是我的 size 矩阵(32000*2500)。这将在 size 的输出矩阵中返回 PCA 系数2500*2500

pca 的帮助指出:

coeff 的每一列都包含一个主成分的系数,并且这些列按成分方差的降序排列。

在此输出中,我的数据的观察值是哪个维度?我的意思是,如果我必须将其提供给分类器,行将coeff代表我的数据观察,还是现在是 的列coeff

以及如何删除变化最小的系数?

4

1 回答 1

5

(免责声明:我从matlab切换到scipy已经很久了,但原理是一样的。)

如果您使用该svd功能

[U,S,V] = svd(X)

然后为了减少 to 的维度Xk您将乘以 的第一kV。在matlab中,我猜那是

X * V(:, 1: k);

有关该理论,请参阅统计学习要素。

于 2016-02-27T15:25:01.073 回答