6

次の形式の約850万のデータポイントを含むテキストファイルがあります。

Company 87178481
Company 893489
Company 2345788
[...]

Pythonを使用して接続グラフを作成し、企業間のネットワークがどのように見えるかを確認したいと思います。上記のサンプルから、2番目の列の値が同じである場合(Hookedからの/の説明)、2つの会社がエッジを共有します。

NetworkXパッケージを使用していて、数千ポイントのネットワークを生成できましたが、850万ノードのテキストファイル全体を通過できません。それを実行して約15時間放置しました。戻ったとき、シェルのカーソルはまだ点滅していましたが、出力グラフはありませんでした。

それがまだ実行されていると想定しても安全ですか?何百万ものポイントをグラフ化するためのより良い/より速く/より簡単なアプローチはありますか?

4

2 に答える 2

5

1000Kポイントのデータがある場合は、全体像を見る何らかの方法が必要になります。正確に探しているものに応じて、企業間の「距離」(たとえば、接続の数)を割り当てることができれば、樹状図を介して関係(またはクラスタリング)を視覚化できます。

Scipyはクラスタリングを行います:

http://docs.scipy.org/doc/scipy/reference/cluster.hierarchy.html#module-scipy.cluster.hierarchy

そして、それらを視覚化のための樹状図に変換する機能があります。

http://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.hierarchy.dendrogram.html#scipy.cluster.hierarchy.dendrogram

を介した最短経路距離関数の例networkx

http://networkx.lanl.gov/reference/generated/networkx.algorithms.shortest_paths.generic.shortest_path.html#networkx.algorithms.shortest_paths.generic.shortest_path

最終的には、グラフ内の2つの会社(頂点)間の距離をどのように重み付けするかを決定する必要があります。

于 2012-10-25T16:34:34.753 に答える
4

データポイントが多すぎるため、ネットワークを視覚化したとしても意味がありません。1)重要性の低い/接続性の低い企業を削除して企業数を減らす2)グラフを何らかの形で要約してから視覚化する方法が必要です。

データのサイズを減らすには、ネットワークを個別に作成する方がよい場合があります(独自のコードを使用して企業のエッジリストを作成します)。このようにして、グラフのサイズを小さくすることができます(たとえば、多数のシングルトンを削除することによって)。

要約すると、クラスタリングまたはコミュニティ検出アルゴリズムを実行することをお勧めします。これは、非常に大規模なネットワークでも非常に高速に実行できます。igraphパッケージの「fastgreedy」メソッドを使用します:http://igraph.sourceforge.net/doc/R/fastgreedy.community.html オンラインでも利用可能なより高速なアルゴリズムがあります。これはBlondelらによるものです:http: //perso.uclouvain.be/vincent.blondel/publications/08BG.pdf彼らのコードはどこかでオンラインで入手できることを知っています)

于 2012-10-25T18:10:27.787 に答える