numpyメモ
今日はPageRankアルゴリズムをpythonで実装してました。
PageRankと言えばGoogleですが、ネットワーク構造におけるノード(サイト)のランキング付けに用いられるアルゴリズムです。他にも、HITSや媒介中心性、近接中心性などあります。
ネットワークはグラフとして扱えるので、よく行列やベクトル計算が頻出します。PageRankも行列を使って求めます。
pythonで普通に行列計算(for文で)をやると時間がかかるので、numpyという行列計算に強いモジュールを使いました。
numpyメモ
メソッド等はこちらを参考 http://www.scipy.org/Numpy_Example_List
リストをmatrix型に変換
matrix型に変換することで、行列計算が可能です。
In [56]: A = [1,2,3] In [57]: mat(A) Out[57]: matrix([[1, 2, 3]])
matrix型で行列計算
普通の行列計算ができます。
In [62]: A = [1,2,3] In [63]: B = [[1,2,3],[1,2,3],[1,2,3]] In [64]: A = mat(A) In [65]: B = mat(B) In [66]: A*B Out[66]: matrix([[ 6, 12, 18]])
matrix型からリストへ変換
行列計算後、各要素のデータを抜き出したりするためには、リスト型へ再変換しないといけません。
In [68]: A Out[68]: matrix([[1, 2, 3]]) In [69]: A.A Out[69]: array([[1, 2, 3]]) In [70]: A.tolist() Out[70]: [[1, 2, 3]]