2016-12-11 21 views
0

隣接行列を反復処理することにより式を用いて、そして今は、以下の式定数T = 0.15テレポーテーションを使用し、使用して、各ページのページランクを計算する必要がありますコンピュPageRankの私はExcelスプレッドシート内の隣接行列を作成した

x=formula 
for i in range(len(matrix): 
if i=1, then i==x 
    else 
    return 0 
print(i?) 

私はそれがはるかに完璧であることから知っている、と私はまだこれを通じ仕事にしようとしています:

PR(W)=T/N+(1-T)(PR(W1)/O(W1)+PR(W2)/O(W2)+...PR(Wn)/O(WN)) 

私はこのアクションを実行するための擬似コードを信じているが、このようなものでなければなりません。

私は、最初に、式自体のための別のプログラムコードを作成し、その変数を宣言する必要があるとします。

これはPythonまたはRでこのアイデアを実装するのに満足な解決策でしょうか?または、ページランクを計算するためのより良い方法がありますか?

私はウェブでさまざまな解決策を見つけましたが、私の特定のケースと関連してあまり役に立ちませんでした。

答えて

0

あなたのデータがそれほど大きくない場合、それはExcelスプレッドシートにあるので、用意された行列Aの最初の固有ベクトルを計算することができます。あなたの隣接行列をMと命名しましょう。次のようにRのコードは次のとおりです。

n = ncol(M) 
B = matrix(1/n, n, n) # the teleportation matrix 
A = 0.85 * M + 0.15 * B 
ranks = eigen(A)$vectors[1] # your PageRanks 

あなたの行列が大きい場合は、あなたがパッケージから例の機能page_rankためigraph

+0

を使用することができます。これは良さそうに見えます、どうもありがとうございました! N = NcoI部位(M) B =マトリックス(1/N、N、N)#テレポーテーション行列 > A = 0.85 * M + 0.15 * B 警告メッセージ: が、私はいくつかのエラー・メッセージがあります。 1:Ops.factor(左、右):因子には意味がありません。 2:Ops.factor(左、右)で: '*'は因子に意味がありません rank = eigen(A)$ vectors [ 1]#あなたのPageRanks# 固有値(A)のエラー: '固有値'の非正方行列 私はRをあまり経験していないので、この特定のケースに対する答えを見つけるのに苦労しています。 'ランク=固有値(A)$ベクトル[500]#あなたのページランク : マトリックスは500×500聖霊降臨祭の1と0の – v0id

+0

である私の最後のコメントを無視してください、それは今、私はこの出力を持っているデータ に関する私自身の間違いでしたA = 0.85 * R + 0.15 * B >ランク=固有ベクトル(A)$ベクトル[500]#n =あなたのページランク >印刷(ランク) [1] -0.0002985959 +実際に動作しますが、私は理想的には次のようになり、各ページのページランクが必要0i' : '反復<反復数> ... ' 又はテーブルとして 私は理解されるように、$ベクトル[1]一般的な結果を格納する配列であり、ランクで表され – v0id

関連する問題