在Python中查找特征的非排序特征值
我现在在尝试一些关于主成分分析(PCA)的东西,但我很想知道每个特征值对应的特征是什么。
numpy.linalg.eig
给我们提供了一个已经排序好的对角矩阵,但我想要这个矩阵保留在原来的位置。有没有人知道我该怎么做?
2 个回答
0
(这不是答案,但我需要对这个评论进行高级格式化。)
你需要说明你想要什么样的排序。例如,这个矩阵的特征值
/ 0 1 \
A = | |
\ 1 0 /
是 +1
和 -1
,对应的特征向量是 (1 1)
和 (1 -1)
。你希望这些特征值怎么排序,为什么呢?
1
Sven在评论中提到的内容是对的。特征值没有“默认”的排序。每个特征值都是和一个特征向量“关联”的,而“正确匹配”特征值和特征向量这一点是非常重要的。你会发现所有的编程语言和工具包都是这样做的。
所以,如果R给你特征值 [e1,e2,e3]
和特征向量 [v1,v2,v3]
,那么Python可能会给你(比如说) [e3,e2,e1]
和 [v3,v2,v1]
。
记住,特征值告诉你数据中有多少变化是由它关联的特征向量解释的。因此,在主成分分析(PCA)中,一个自然的排序方式(对我们来说比较直观)是按照特征值的大小来排序(可以是从小到大或从大到小)。这样,你就可以很容易地查看特征值,判断哪些应该保留(大的,因为它们解释了大部分数据)以及哪些应该丢弃(小的,可能是高频特征或只是噪音)。