我正在用 Python 编写代码来分析具有节点和边缘属性的社交网络。目前,我正在使用 NetworkX 包来生成图表。可以使用此包生成的图的大小(就节点数、边数而言)是否有任何限制?
我是用 Python 编写社交网络问题的新手,最近遇到了另一个用于大型网络的名为 NetworKit 的包,但不确定 NetworKit 的大小应该是更好的选择,能否详细说明两者之间的性能和功能差异包?
感谢您提前回复。
我正在用 Python 编写代码来分析具有节点和边缘属性的社交网络。目前,我正在使用 NetworkX 包来生成图表。可以使用此包生成的图的大小(就节点数、边数而言)是否有任何限制?
我是用 Python 编写社交网络问题的新手,最近遇到了另一个用于大型网络的名为 NetworKit 的包,但不确定 NetworKit 的大小应该是更好的选择,能否详细说明两者之间的性能和功能差异包?
感谢您提前回复。
我的建议:
从 Networkx 开始,因为它有一个更大的社区,它得到了很好的维护和记录……而且最重要的是……你可以很容易地理解它的作用,因为它 100% 用 Python 完成。确实它不是很快,但对于大多数计算来说已经足够快了。如果您从笔记本电脑运行计算,则在大型网络(> 10k 节点和> 100k 顶点)中进行密集计算(例如:sigma/omega small worldness 指标)可能会很慢。
如果您需要加快速度,那么您可以轻松地将 networKit 合并到您的代码中,因为它非常容易与 networkx 和 pandas 集成,但它的算法库要有限得多。
自己比较一下:NetworkX 算法:https ://networkx.github.io/documentation/stable/reference/algorithms/index.html VS NetworKit 算法:https ://networkit.github.io/dev-docs/python_api/modules.html
可以使用此包生成的图的大小(就节点数、边数而言)是否有任何限制?
不,没有限制。这完全取决于您的内存容量和大小。
您能否详细说明这两个软件包在性能和功能上的差异?
我个人对 NetworkKit 没有任何经验,但是在这里(由 Timothy Lin 撰写)您可以找到对不同工具(包括 networkx 和 networkkit)的非常好的基准测试分析。查看其结论部分:
至于人们应该学习哪些软件包的建议,我认为选择 networkx 仍然很重要,因为它使网络科学可以通过广泛的工具和功能非常易于访问。如果分析开始太慢(也许这就是您在这里的原因),那么我建议您查看 graph-tool 或 networkit 以查看它们是否包含满足您需求的必要算法。