我现在正在尝试使用 PCA 做一些事情,但了解每个特征值的哪些特征对我来说非常重要。
numpy.linalg.eig
给我们已经排序的对角矩阵,但我希望这个矩阵与它们在原始位置。有人知道我怎么做吗?
斯文在他的评论中提到的是正确的。特征值没有“默认”排序。每个特征值都与一个特征向量相关联,重要的是特征值-特征向量对正确匹配。你会发现所有的语言和包都会这样做。
因此,如果 R 给你 eigenvalues[e1,e2,e3
和 eigenvectors [v1,v2,v3]
,python 可能会给你(比如说)[e3,e2,e1]
和[v3,v2,v1]
.
回想一下,特征值告诉您数据中的方差有多少是由与之关联的特征向量解释的。因此,在 PCA 中有用的特征值的自然排序(对我们来说很直观)是按大小(升序或降序)。这样,您可以轻松查看特征值并确定要保留哪些特征值(大,因为它们解释了大部分数据)和丢弃哪些特征值(小,可能是高频特征或只是噪声)
(不是答案,但我需要此评论的高级格式。)
您必须指定您想要的订购方式。例如,这个矩阵的特征值
/ 0 1 \
A = | |
\ 1 0 /
是+1
和-1
,对应于特征向量(1 1)
和(1 -1)
。您希望如何对这些特征值进行排序,为什么?