Home

Awesome

npartite

 
このパッケージは,n部ネットワークからのコミュニティ抽出に関連するアルゴリズムを含んでいます.

This package contains some algorithms about community detection from n-partite networks.
(English is here)

概要

2部ネットワークや3部ネットワークなどのn部ネットワークから, コミュニティを抽出するためのアルゴリズムを含んでいます. コミュニティ抽出アルゴリズムはモジュラリティ値の最適化に基づくものです.

コミュニティ抽出アルゴリズムだけではなく, 人工的なn部ネットワークの生成アルゴリズム,コミュニティ抽出結果の評価指標なども含んでいます. 各種アルゴリズムを用いて,人工ネットワークや実ネットワーク上で様々な実験を行うことが可能です.

以下の画像は,3部ネットワークからのコミュニティ抽出の例です.

<img width="500" src="./community.png">

パッケージの内容

必要なモジュール

NMI値を計算するためにはnumpyが必要です.

使い方

以下の例では,SIMPLE ケースのような正解構造を持つ人工3部ネットワークを作成し, それに対してコミュニティ抽出を行っています. また得られたコミュニティ抽出結果を,NMIを用いて正解構造と比較しています.



from npartite.extcom.evaluation import calculate_nmi
from npartite.extcom.modularity import NeubauerModularity
from npartite.extcom.optimization import GreedyVertexBottomUp
from npartite.synthetic.tripartite import SimpleCaseMaker

# make synthetic network
syn_maker = SimpleCaseMaker(corres_egnum=40, noise_ratio=0)
syn_network = syn_maker.make()

# get edge list and correct community structure
edge_list = syn_network.edge_list()
correct_labels = syn_network.correct_community_labels()

# initialize modularity and optimization method
modularity = NeubauerModularity()
optimization = GreedyVertexBottomUp()

# detect communities
results = optimization.start(modularity, edge_list)

# modularity value, 
# detected community labels of the each vertex
# all modularity values through the process of the optimization 
mod_value, detected_labels, mod_values = results

# print each value
print 'modularity value: %f' % (mod_value, )
print 'detected community labels: %s' % (detected_labels, )
print 'correct community labels : %s' % (correct_labels, )
print 'all modularity values through the process: %s' % (mod_values, )


# calculate the value of NMI
nmi = calculate_nmi(detected_labels, correct_labels)
print 'NMI: %f' % (nmi, )

参考文献