NetworkXで一枚可視化が出来たので、今度は少し深入りしてみようと思います。 Software for Complex Networks — NetworkX 3.3 documentation Greedy Coloringというものがありました。12面体ドデカヘドラのグラフです。 「greedy」という言葉の語源は、古英語の「grēdīg」に遡るそうです。この言葉は「欲しい」という意味の「grēd」から派生しており、もともとは「渇望している」「強く欲する」というニュアンスを持っており、現在の意味では「欲深い」「貪欲な」という意味だそうです。 Greedy alogorithmは貪欲法と呼ばれ、局所探索法 と並んで近似アルゴリズムの 最も基本的な考え方の一つだそうです。 Greedyな手法というと、最適化問題を解くためのアルゴリズムの一種で、各段階で局所的に最適な選択を行いながら全体の最適解に近づこうとする方法だそうです。具体的には、各ステップでその時点での最善の選択を行い、その選択が後のステップでも続いていく特徴があるそうです。 それでは、コードを見てみます。 # ライブラリーのインポート import numpy as np import networkx as nx import matplotlib.pyplot as plt import matplotlib.colors as mpl numpyは、 数値計算ライブラリ networkxは、 グラフ構造を操作するためのライブラリ matplotlib.pyplotは、 グラフを描画するためのライブラリ matplotlib.colorsは、 カラーマッピングに使用されるライブラリ # グラフの生成 G = nx.dodecahedral_graph() nx.dodecahedral_graphで、 ドデカヘドラ(12面体)グラフを生成します。 # グラフの色付け graph_coloring = nx.greedy_color(G) unique_colors = set (graph_coloring.values()) nx.greedy_color(G)で、 貪欲法を用いてグラフのノードに色を割り当てます。この方法では、隣接するノードが異なる色を持つようにします。...
長文を読むのは大変ですよね。Pythonで自然言語処理をすることで、可視化する手法があるそうなので、挑戦してみます。 可視化の手段としてNetworkXが使えそうです。 Software for Complex Networks — NetworkX 3.3 documentation GalleryのAlgorithmsのところに「Betweenness Centrality」が紹介されていましたので、ダウンロードしてグラフを作成しました。紹介されていたものにはテキストがありませんでしが、テキストを表示するようにしました。 Network download (inetbio.org) 何をしているコードなのか調べます。 # ライブラリーのインストール from random import sample import networkx as nx import matplotlib.pyplot as plt random モジュールから sample 関数をインポートしています。 この関数は、リ ストなどから指定した数の要素をランダムに選ぶために使います。 networkx ライブラリを nx というエイリアスでインポートしています。 このライブラリは、ネットワークやグラフを作成・操作するための強力なツールです。 matplotlib ライブラリの pyplot モジュールを plt というエイリアスでインポートしています。 pyplot は、データの視覚化を行うための機能を提供します。 # データの読み込み G = nx.read_edgelist( "WormNet.v3.benchmark.txt" ) networkx の関数で、エッジリスト形式のデータを持つテキストファイルを読み込み、そのデータを使ってグラフオブジェクトを作成します。 エッジリストとは、ノード間の接続(エッジ)の情報をリスト形式で記述したもので、通常は2列の形式で、1行が2つのノードを表すことが多いです。このデータも1行に2つのノードが入っています。 # 実行速度を上げるためにランダムにノードを削除 num_to_remove = int ( len (G) / 1.5 ) nodes = sample( list (G.nodes), num_to_re...