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

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

 

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

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

 

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

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

 

 进行社区检测

如果用户指定了用户要检测的社区数量,则 会找到相应的社区数量。如果用户未假定某个概率,则 使用(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)

  • 悲惨世界中的人物网络中的社区。不共享社区的两个节点之间的边缘概率设置为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 亚马逊产品网络

如果您有任何疑问,请在下面发表评论。

原文地址:https://www.cnblogs.com/tecdat/p/11634295.html