用于在Python中查找特征的非排序特征值

问题描述:

我正在尝试使用PCA进行一些操作,但对于我来说知道哪些特征负责每个特征值是非常重要的。用于在Python中查找特征的非排序特征值

numpy.linalg.eig给我们已经排序的对角线矩阵,但我想要这个矩阵与他们在原来的位置。有人知道我能做到吗?

+3

有没有特征值的自然顺序,也没有“原始位置”。 – 2011-06-03 13:21:17

+0

好的,但是为Python中和R中的相同矩阵计算的特征值给了我不同顺序的相同值。 – jozepinto 2011-06-03 14:49:30

+0

@jozepinta:我告诉过你,没有自然秩序。你必须选择一个。 Python和R碰巧选择了不同的顺序,但这两种顺序都是任意的选择。 – 2011-06-03 14:55:31

(不是一个答案,但我需要为这个评论高级格式)。

您必须指定gyou想要的订货。例如,该矩阵

/0 1 \ 
A = |  | 
    \ 1 0/

的本征值是+1-1,对应于特征向量(1 1)(1 -1)。你想如何定购这些特征值?为什么?

斯文在他的评论中提到的是正确的。没有特征值的“默认”排序。每个特征值是相关的带有一个特征向量,并且它很重要是特征值 - 特征向量对正确匹配。你会发现所有的语言和包都会这样做。

所以,如果R为您提供了特征值[e1,e2,e3和特征向量[v1,v2,v3],蟒蛇可能会给你(说)[e3,e2,e1][v3,v2,v1]

回想一下特征值告诉你数据中有多少变化是由与之相关的特征向量解释的。因此,在PCA中有用的特征值的自然排序(对我们来说很直观)是按大小(升序或降序)。这样,您可以轻松查看特征值并识别哪些特征值(大,因为它们解释了大部分数据)以及要抛出哪些特征值(小,这可能是高频特征或者只是噪音)