いろんなものはつながっている

pythonで固有値分解をしてみる

データ列から相関行列を作成し、相関行列を固有値分解してみる。相関行列はエルミート行列なので、固有値は実数。固有値を昇順で出力するために、scipy.linalg.eighを用いる。

import numpy as np
from scipy import linalg

#データ列から相関行列を作成する
sig=np.random.randn(6,100) + np.random.randn(6,100)*1j
cov=np.dot(sig, sig.conjugate().T)

#エルミート行列の固有値、固有ベクトルを求める
#固有値は昇順で出力される。
edig, evec = scipy.linalg.eigh(cov)

#検算してみる
print('A evec =', np.dot(cov, evec);
print('evec edig=', np.dot(evec, np.diag(edig)) 

#固有値が小さいほうから3つにあたる固有ベクトルを抽出する
space = eigvec[:,:-3]

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

スポンサード リンク

カテゴリー

スポンサード リンク