3日ほど前から主成分分析(PCA)を理解すべく例題を解いています。大雑把に言うと、二次元データ(x、y)を新しい軸の二次元データ(第一主成分軸 , 第二主成分軸)に変換しようとしています。

 例えば、クラスの(身長 , 体重)のデータを主成分分析して新たに(体のデカさ , 肥満度)でクラスの人の体系を測れるようになります。こうすると、身長170㎝で体重70㎏のAさんと、身長190㎝で体重70㎏のBさんで、体の大きさだけでなく肥満度までを数値化できるようになるのです。

 要するに同じデータでも軸の取り方を変えれば、今あなたが知りたい情報をより分かりやすい数値として得られるということですかね。

 

 このPCAをする過程でとある行列Rの固有値・固有ベクトルが必要で、少数5桁とかあるのを手計算は無理なのでC言語で固有ベクトルを求めるコード(ガウスの消去法)を作りました。しかし、ここで壁にぶち当たります。行列次第では解けないものがありました。原因は今のコードだと0で割ることを回避しきれていないことでした。。。僕の一日かけたプログラムが、、、

 珍しくみんなの様子を見に来た教授から一言 「固有値固有ベクトルなんてのはPythonかRで一発なんだよ」。 「そうですよね。Pythonやります」。(笑)とうことでPythonはじめました。

 

 インストールするときにいろいろ問題あったんですけど割愛。(結局、環境変数(Path)のいみは理解できず。わかる来る人いたら教えて下さい。理系ですがPC弱者なんです。。)

 

 で、長くなりましたが、Pythonは非常に優秀で秒で固有値&ベクトル出ました!(Cしかやっていなかった僕には感動でした。)

 今後はPCAの全手順をコードにして行列R を入力すれば新しい軸上にプロットしてくれるようしていきたいです。

 

 さすがに文章が長すぎたかな。可視化できる図とかを入れてみたいし、要点のみ伝える文章力もこれで身に着けたいな。