python隶属关系图模型:基于模型的网络中密集重叠社区检测方法

 原文链接:http://tecdat.cn/?p=7285

隶属关系图模型 是一种生成模型,可通过社区联系产生网络。下图描述了一个两方社区隶属关系图和一个网络的示例(图1)。

  • 图1.左:两方社区关系图(圆形节点表示三个社区,正方形节点代表网络的节点),右:AGM生成的网络,社区关系图在左侧

 python隶属关系图模型:基于模型的网络中密集重叠社区检测方法_第1张图片

 当我们使用适合于实际网络的 合成网络时,合成网络具有与真实网络非常相似的特征(图2)。

  • 图2.边缘概率是Orkut网络中常见社区成员数量的函数  。

python隶属关系图模型:基于模型的网络中密集重叠社区检测方法_第2张图片

 进行社区检测

如果用户指定了用户要检测的社区数量,则 会找到相应的社区数量。如果用户未假定某个概率,则 使用(1 / N ^ 2),其中N是图中的节点数。

例子

我们展示了一些由隶属关系图模型和基础网络检测到的社区的示例。

图创建

如何创建和使用有向图的示例:

# create a graph PNGraph G1 = snap.TNGraph.New() G1.AddNode(1) G1.AddNode(5) G1.AddNode(32) G1.AddEdge(1,5) G1.AddEdge(5,1) G1.AddEdge(5,32)

用于保存和加载图形的 代码如下所示:

# generate a network using Forest Fire model G3 = snap.GenForestFire(1000, 0.35, 0.35) # save and load binary FOut = snap.TFOut("test.graph") G3.Save(FOut) FOut.Flush() FIn = snap.TFIn("test.graph") G4 = snap.TNGraph.Load(FIn) # save and load from a text file snap.SaveEdgeList(G4, "test.txt", "Save as tab-separated list of edges") G5 = snap.LoadEdgeList(snap.PNGraph, "test.txt", 0, 1)

python隶属关系图模型:基于模型的网络中密集重叠社区检测方法_第3张图片

  • 悲惨世界中的人物网络中的社区。不共享社区的两个节点之间的边缘概率设置为0.01,以检测更紧凑的社区。
  • NCAA橄榄球队网络中的社区(通过将两个不共享社区的节点的边缘概率设置为0.1的5个试验的最佳结果。圆形区域表示检测到的社区,节点颜色表示NCAA会议。):

下载资料

我们提供6个数据集,每个数据集都有一个网络和一组_真实的_社区。真实社区是可以从数据中定义和标识的社区。每个数据集的网页都描述了我们如何识别数据集中的真实社区。

数据集:

 

类型

节点数

边缘

社区

描述

 

无向,社区

3,997,962

34,681,189

664,414

LiveJournal在线社交网络

 

无向,社区

65,608,366

1,806,067,135

1,620,991

Friendster在线社交网络

 

无向,社区

3,072,441

117,185,083

15,301,901

Orkut在线社交网络

 

无向,社区

1,134,890

2,987,624

16,386

YouTube在线社交网络

 

无向,社区

317,080

1,049,866

13,477

DBLP协作网络

 

无向,社区

334,863

925,872

271,570

亚马逊产品网络

你可能感兴趣的:(python,社区)