2.6. mbipolish 2部グラフの研磨¶
2部グラフデータを入力として、密度の高い部分グラフの中でエッジが張られていないノードペアに枝を張る。
逆に、密度の低い部分グラフのエッジを削除する。
新たに張られる枝や刈られる枝の程度は、sim=
, th=
と sim2=
, th2=
で与えた値によって変わる。
パラメータ¶
ei= : 型=str , 必須
エッジデータファイル名を指定する。
ef= : 型=str , 任意(default=node1,node2)
エッジデータ上の2つのノード項目名を指定する。
eo= : 型=str , 必須
データ研磨後のエッジデータファイル名を指定する。
sim= : 型=str , 任意(default=R)
ノードa,bに張られたエッジ集合を、それぞれA,Bとしたとき、ノードa,bに枝を張るために用いる類似度を指定する。* i: inclusion* I: both-inclusion* S: \(|A \cap B| / max(|A|,|B|)\)* s: \(|A \cap B| / min(|A|,|B|)\)* T (intersection): find pairs having common [threshld] items* R (resemblance): find pairs s.t. \(|A \cap B| / |A \cup B| >= [threshld]\)* P (PMI): find pairs s.t. log ( \(|A \cap B| * |all| / (|A|*|B|)) >= [threshld]\)* C (cosine distance): find pairs s.t. inner product of their normalized vectors >= [threshld]
sim2= : 型=str , 任意(default=sim=の値)
指定できる値はsim=
と同じ。
th= : 型=float , 必須
sim=
で指定された類似度について、ここで指定された値以上の節点間に辺を張る。
th2= : 型=float , 任意(default=th=の値)
sim2=
で指定された類似度について、ここで指定された値以上の節点間に辺を張る。
sup= : 型=int , 任意(default=0)
左の部の次数がsup以上のノードを対象とする。省略すればsup=0。
kn= : 型=int , 任意(default=1)
kn=で指定された値以上の共起頻度を対象とする。
kn2= : 型=int , 任意(default=1)
kn2=で指定された値以上の次数を持つ右部を対象とする。
iter= : 型=int , 任意(default=30)
データ研磨の最大繰り返し数を指定する。
O= : 型=str , 任意(default=研磨過程を出力しない)
デバッグモード時、データ研磨過程のグラフを保存するディレクトリ名を指定する。
log= : 型=str , 任意(default=ログを出力しない)
パラメータの設定値や収束回数等をkey-value形式のCSVで保存するファイル名を指定する。
T= : 型=str , 任意(default=/tmp)
ワークディレクトリ名を指定する。
利用例¶
入力データの準備
1with open('edge.csv','w') as f: 2 f.write( 3'''node1,node2 4A,a 5A,b 6B,a 7B,b 8C,c 9C,d 10D,b 11D,e 12''')
基本例
1import nysol.take as nt 2nt.mbipolish(ei="edge.csv",ef="node1,node2", th=0.2, eo="output.csv").run() 3### output.sv の内容
関連メソッド¶
mpolishing 一般グラフの研磨 : 一般グラフの研磨