csv から隣接行列を生成しようとしています。
csv には、ユーザー用とプロジェクト用の 2 つの列が含まれています。2 つの列は 2 部グラフを形成し、各ユーザーは複数のプロジェクトの一部になることも、まったく含まれないこともありますが、同じセットのノード間にエッジはありません (同じユーザー プロジェクト ペアの繰り返しエントリはありませんが、繰り返しエントリがあります)。ペアの組み合わせが異なる同じユーザーまたはプロジェクトの)。
Matlab と ismember(a,b) を使用して、各ユーザーのプロジェクトをプロジェクト セット全体と比較するための比較を作成しました。アルゴリズムは、各エントリに対して反復的に実行されます。最終的に、サイズ M(|users| + |user|) x (|users| + |user|) の隣接行列ができました。
エントリ数が 15000 未満の場合は高速に動作しますが、+15000 のサンプルの場合は Matlab が停止します。隣接行列をゼロ行列 (zero(r,c)) で初期化し、行ごとに ismember(a,b) の結果を追加します。しかし、私のMatlabでは、ゼロ行列 zero(15000,15000) はメモリをほとんど使い果たします。R でそのサイズ (matrix(0, 15000, 15000)) のゼロ行列も作成しようとしましたが、R のメモリも最大になります。
これを回避する方法はありますか?私の完全なサンプル サイズは 597,000 行 (~70,000 人のユーザーと ~35,000 のプロジェクト) で、ネットワーク分析を実行したいと考えています。
また、結果に対して実行したい最大カット最小フローアルゴリズムがあり、マトリックスでのみ機能するため、隣接リストではなくマトリックス形式で保持したいと考えています。
更新しました:
データはこんな感じ
ユーザー | 計画 382 2429 385 2838 294 2502 ... ... ...
ノートルダム大学の Zerlot を使用して SourceForge から取得されます。各 int 値は SQL データベースのキーです。この所属データを、ユーザー間の各エッジが共有プロジェクトであるワンモードのユーザー間隣接マトリックスに変換したいと考えています。