我正在研究网络中的检测社区。
我正在使用networkx和Python,我需要实现此算法:http://arxiv.org/pdf/0803.0476.pdf
这就是我试图解决它的方法:首先我制作列表列表,其中包含与图中节点一样多的列表(社区),以便我可以通过索引找到社区。然后对于每个节点,我找到它们的邻居并计算模块化增益,如下所示:
q1 = (sum_in+ki_in)/float(2*m) - pow(sum_tot+ki,2)/float(pow(2*m,2))
q2 = sum_in/float(2*m) - pow(sum_tot, 2)/float(pow(2*m,2)) -pow(ki,2)/float(pow(2*m,2))
q = q1 - q2
在哪里
for x in temp: # list of neighbors of node i
sum_in += G.degree(x, weight='weight')
sum_tot += G.in_degree(x, weight='weight')
ki_in += weights[i, x]
ki = G.in_degree(i, weight='weight')
然后我找到最大q并将节点I移动到新社区。但是这不起作用,似乎我在公式中犯了错误,因为对于大量节点,算法没有找到社区。
有人知道如何解决这个问题吗?
您不需要解决这个问题,该算法已经在社区包中用python实现了。您可以看看他们是如何在源代码中实现的。
如果你必须自己实现它的任务,尽量避免继续堆栈溢出的坏习惯,你可以通过自己找到更多;)
无法访问您提供的链接。(我本打算发表评论,但目前无法添加评论)
我有一个网络是一个图形网络,它是Email-Eu网络,在这里可用。 该数据集具有实际数据集,这是一个由大约1005个节点组成的图,其边缘形成了这个巨大的图。它还具有节点及其相应社区(部门)的地面真相标签。这些节点中的每一个都属于42个部门中的一个。 我想在图上运行一个社区检测算法,为每个节点找到相应的部门。我的主要目标是找到最大社区中的节点。 因此,首先我需要找到前42个部门(社区),然后在其中最
以下是我的数据集演示: 由非常大的相关帐户的Twitter帐户追随者、该追随者的追随者以及这些追随者的追随者组成的大型社交网络,在每次迭代中清理机器人帐户、私人帐户等。 总节点:约500,000 总连接:95百万 4个节点有超过300万个连接 567个节点有超过100,000个连接 一半的数据集有3个或更少的连接 也就是说,我想清理这个网络,以便在进一步聚集子社区之前,从原始的初始图中获得“最佳”
我试图在Java中实现上述社区检测算法,虽然我可以访问C代码和原始论文——但我根本无法使其工作。我的主要问题是我不明白代码的目的——即算法是如何工作的。实际上,我的代码陷入了的无限循环中,列表似乎在每次迭代中都变得越来越大(正如我对代码的期望),但的值总是返回相同的值。 我测试这个的图相当大(300,000个节点,650,000条边)。我用于实现的原始代码来自SNAP库(https://githu
我正在尝试使用Python OpenCV和Hough变换算法检测表线并从图像中提取完整的表。我需要有每条线的所有坐标,目的是绘制相同比例的相同表格。我了解Hough变换的工作原理,并尝试在没有OpenCV的情况下实现它,但在大图像上速度非常慢。 这是来自示例OpenCV Hough Transfrom的代码 Canny边缘检测返回图像Canny边缘检测结果 但是检测的结果是豪斯变换的结果 我不知道
问题内容: 我正在尝试使用win32api通过特定的按键来打破Python中的循环。怎么会这样呢? 在以下代码中, win32api.KeyPress(’H’) 的实际版本是什么? 修订: 我希望能够通过按 h 键来中断循环。 编辑: 我正在尝试制作一个反复报告鼠标位置的程序,并且需要一种退出该程序的机制。 请参阅修订的代码。 问题答案: 只是底层Windows低层库的接口。见功能: 确定在调用函
我想评估和比较我的社区检测算法在R中的结果。我的算法不允许重叠,并且有一些节点没有被处理。例如,对于Zachary空手道俱乐部,我有1个节点未处理。我发现了很多指标(NMI、ARI、模块化(Q)、纯度、排名指数…),我不知道哪一个是最好的。目前,我正在使用模块化、纯度和排名指数。 这些选择的评估指标是否足够? 例如,对于秩指数是RI(P,R)=(a d)/(a b c d),其中a、b、c和d是根