要做PCA,我们必须从输入数据计算协方差矩阵,然后在该协方差矩阵中执行特征分解。
为了获得协方差矩阵,我们必须计算均值,然后用我们的数据(矩阵中的数据)将其减去。但问题是我要进行PCA分类。
我对如何计算平均值感到困惑(它必须是行计算的平均值(考虑类)/列(考虑特征))?
在我的情况下,这是要素矩阵的格式:
Class1: feat1 feat2 feat3...featn
Class2: feat1 feat2 feat3...featn
Class3: feat1 feat2 feat3...featn
Class4: feat1 feat2 feat3...featn
Class5: feat1 feat2 feat3...featn
.
.
.
ClassN: feat1 feat2 feat3...featn
我所做的是
mean (perclass or rows)
所以我有(平均矩阵)
Mean_Class1
Mean_Class2
Mean_Class3
Mean_Class4
Mean_Class5
.
.
.
Mean_ClassN
然后我用我的特征矩阵对这些数据进行Substract。 所以它变成了( Substract Matrix ):
Class1: feat1-Mean_Class1 feat2-Mean_Class2 feat3-Mean_Class3...featn-Mean_ClassN
Class2: feat1-Mean_Class1 feat2-Mean_Class2 feat3-Mean_Class3...featn-Mean_ClassN
Class3: feat1-Mean_Class1 feat2-Mean_Class2 feat3-Mean_Class3...featn-Mean_ClassN
Class4: feat1-Mean_Class1 feat2-Mean_Class2 feat3-Mean_Class3...featn-Mean_ClassN
Class5: feat1-Mean_Class1 feat2-Mean_Class2 feat3-Mean_Class3...featn-Mean_ClassN
.
.
.
ClassN:feat1-Mean_Class1 feat2-Mean_Class2 feat3-Mean_Class3 ... featn-Mean_ClassN
接下来是协方差矩阵:
(Substract Matrix)*(Substract Matrix)^T
使用eigs从此协方差矩阵中提取主成分 [Vectors,Values] = eigs(CovarianceMatrix);
为了降低维数,我必须在将其均值减去提取的特征向量之后将这些数据投影。
然后投射它:
Substract Matrix * Vectors
对不起如果这是一个愚蠢的问题,但我真的需要确认真实的概念..