2011-06-03 6 views
1

私は今PCAでいくつかのことを試していますが、それぞれの固有値の原因となるものがどれであるかを知ることは非常に重要です。Pythonで機能を見つけるためのソートされていない固有値

numpy.linalg.eigは、すでにソートされた対角行列を返しますが、私はこの行列を元の位置に配置したかったのです。誰も私がそれを作る方法を知っていますか?

+3

あります固有値の自然順序はなく、元の位置はありません。 –

+0

でも、PythonとRの同じ行列に対して計算された固有値は、同じ値を別の順序で返します。 – jozepinto

+0

@jozepinta:私はあなたに言った、自然な順序はありません。あなたは1つを選択する必要があります。 PythonとRは別のものを選択することになりますが、これらの順序はどちらも任意です。 –

答えて

0

(ない答えが、私はこのコメントのための高度な書式設定を必要とする。)

あなたはgyouが何をしたいの順序を指定する必要があります。例えば、この行列の固有値

/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で有用な固有値(私たちに直感的です)の自然なソートは、サイズ(昇順または降順)によって行われます。そうすることで、固有値を簡単に見て、保持するもの(大部分はデータの大部分を説明しています)と特定のものを特定することができます(小頻度、高頻度フィーチャ、またはノイズのみ)

関連する問題