首页 文章

在Matlab中使用PCA降低尺寸

提问于
浏览
0

我试图在matlab中对车辆进行分类 . 我需要减少功能的维度以消除冗余 . 我正在使用pca . 不幸的是,pca函数没有返回预期的结果 . 输出似乎被截断,我不明白为什么 .

总结如下:

Components_matrix = [Areas_vector MajorAxisLengths_vector MinorAxisLengths_vector Perimeters_vector...
        EquivDiameters_vector Extents_vector Orientations_vector Soliditys_vector]

输出是:

Components_matrix =

1.0e+03 *

1.4000    0.1042    0.0220    0.3352    0.0422    0.0003    0.0222    0.0006
2.7690    0.0998    0.0437    0.3973    0.0594    0.0005    0.0234    0.0007
1.7560    0.0853    0.0317    0.2610    0.0473    0.0005    0.0236    0.0008
1.0870    0.0920    0.0258    0.3939    0.0372    0.0003    0.0157    0.0005
0.7270    0.0583    0.0233    0.2451    0.0304    0.0004    0.0093    0.0006
1.2380    0.0624    0.0317    0.2436    0.0397    0.0004    0.0106    0.0007

然后我使用pca函数如下:

[COEFF, SCORE, LATENT] = pca(Components_matrix)
The displayed results are:

COEFF =

0.9984   -0.0533   -0.0057   -0.0177    0.0045
0.0162    0.1810    0.8788    0.0695   -0.3537
0.0099   -0.0218   -0.2809    0.8034   -0.2036
0.0514    0.9817   -0.1739   -0.0016    0.0468
0.0138   -0.0018    0.0616    0.4276   -0.3585
0.0001   -0.0008   -0.0025    0.0215    0.0210
0.0069    0.0158    0.3388    0.4070    0.8380
0.0001   -0.0011    0.0022    0.0198    0.0016

SCORE =

1.0e+03 *

   -0.0946    0.0312    0.0184   -0.0014   -0.0009
    1.2758    0.0179   -0.0086   -0.0008    0.0001
    0.2569   -0.0642    0.0107    0.0016    0.0012
   -0.4043    0.1031   -0.0043    0.0015    0.0003
   -0.7721   -0.0299   -0.0079   -0.0017    0.0012
   -0.2617   -0.0580   -0.0083    0.0008   -0.0020

LATENT =

1.0e+05 *

5.0614
0.0406
0.0014
0.0000
0.0000

我预计例如COEFF和LATENT分别为8x8和8x1矩阵 . 但这不是我得到的 . 为什么会如此,以及如何纠正这种情况 . 请帮助 .

1 回答

  • 2

    您对 pca() 和Matlab输出的使用是正确的 . 问题是你有比样本更多的维度,即你只有6辆车而是8个变量 . 如果您有 N 样本和 N 或更大的变量,那么主要组件的数量仅为 N-1 ,因为其他组件不是唯一的 . 所以 COEFF 是输入的协方差矩阵的特征向量, SCORE(:,1) 是第一个主成分, SCORE(:,2) 是第二个,等等,其中总共只有 N-1=5LATENT 是协方差矩阵的特征值,或者每个连续主成分解释的方差量,其中只有 N-1=5 .

    有一个更详细的讨论here .

相关问题