选择在 PCA 中显示最大方差的组件
Selecting the components showing the most variance in PCA
我有一个庞大的数据集 (32000*2500) 需要训练。这对我的分类器来说似乎太多了,所以我决定阅读一些关于降维的内容,特别是 PCA。
根据我的理解,PCA 选择当前数据并将它们重新绘制在另一个 (x,y) domain/scale 上。这些新坐标没有任何意义,只是重新排列数据以给出一个轴的最大变化。在这些新系数之后,我可以删除具有最小变化的 cooeff
。
现在我正尝试在 MatLab 中实现它,但在处理提供的输出时遇到了问题。 MatLab 始终将行视为观察值,将列视为变量。所以我对 pca
函数的输入将是我的大小矩阵 (32000*2500)
。这将 return 大小为 2500*2500
.
的输出矩阵中的 PCA 系数
pca 状态的帮助:
Each column of coeff contains coefficients for one principal
component, and the columns are in descending order of component
variance.
在此输出中,哪个维度是我的数据观察值?我的意思是,如果我必须将其提供给分类器,coeff
的行会代表我的数据观察结果还是现在 coeff
的列?
如何删除变化最小的系数?
(免责声明:从matlab转scipy已经很久了,但是原理是一样的。)
如果您使用 svd
function
[U,S,V] = svd(X)
然后要将 X
的维度减少到 k
,您需要乘以 V
的前 k
列。在 matlab 中,我猜那是
X * V(:, 1: k);
我有一个庞大的数据集 (32000*2500) 需要训练。这对我的分类器来说似乎太多了,所以我决定阅读一些关于降维的内容,特别是 PCA。
根据我的理解,PCA 选择当前数据并将它们重新绘制在另一个 (x,y) domain/scale 上。这些新坐标没有任何意义,只是重新排列数据以给出一个轴的最大变化。在这些新系数之后,我可以删除具有最小变化的 cooeff
。
现在我正尝试在 MatLab 中实现它,但在处理提供的输出时遇到了问题。 MatLab 始终将行视为观察值,将列视为变量。所以我对 pca
函数的输入将是我的大小矩阵 (32000*2500)
。这将 return 大小为 2500*2500
.
pca 状态的帮助:
Each column of coeff contains coefficients for one principal component, and the columns are in descending order of component variance.
在此输出中,哪个维度是我的数据观察值?我的意思是,如果我必须将其提供给分类器,coeff
的行会代表我的数据观察结果还是现在 coeff
的列?
如何删除变化最小的系数?
(免责声明:从matlab转scipy已经很久了,但是原理是一样的。)
如果您使用 svd
function
[U,S,V] = svd(X)
然后要将 X
的维度减少到 k
,您需要乘以 V
的前 k
列。在 matlab 中,我猜那是
X * V(:, 1: k);