2011-06-03 183 views
1

我正在嘗試使用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

回答

0

(不是一個答案,但我需要爲這個評論高級格式)。

您必須指定gyou想要的訂貨。例如,該矩陣

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

的本徵值是+1-1,對應於特徵向量(1 1)(1 -1)。你想如何定購這些特徵值?爲什麼?

1

斯文在他的評論中提到的是正確的。沒有特徵值的「默認」排序。每個特徵值是相關的帶有一個特徵向量,並且它很重要是特徵值 - 特徵向量對正確匹配。你會發現所有的語言和包都會這樣做。

所以,如果R爲您提供了特徵值[e1,e2,e3和特徵向量[v1,v2,v3],蟒蛇可能會給你(說)[e3,e2,e1][v3,v2,v1]

回想一下特徵值告訴你數據中有多少變化是由與之相關的特徵向量解釋的。因此,在PCA中有用的特徵值的自然排序(對我們來說很直觀)是按大小(升序或降序)。這樣,您可以輕鬆查看特徵值並識別哪些特徵值(大,因爲它們解釋了大部分數據)以及要拋出哪些特徵值(小,這可能是高頻特徵或者只是噪音)