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

2 投票
2 回答
1238 浏览
提问于 2025-04-16 18:54

我现在在尝试一些关于主成分分析(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)中,一个自然的排序方式(对我们来说比较直观)是按照特征值的大小来排序(可以是从小到大或从大到小)。这样,你就可以很容易地查看特征值,判断哪些应该保留(大的,因为它们解释了大部分数据)以及哪些应该丢弃(小的,可能是高频特征或只是噪音)。

撰写回答