我有一个相对较小的数据集,由约 100k 条边和约 7000 个节点组成。我正在尝试使用两种算法来查找数据集中的社区。我添加了边缘并继续运行此处实现的算法:http://perso.crans.org/aynaud/communities/#as-python-module
数据基本如下:
节点1,节点2
节点1连接到节点2,并且该图是无向的。
但是程序只运行了一会儿就给我一个内存错误。我知道它有效,因为我在一个小数据集上测试了它并且它工作正常,但它给了我一个内存错误。我对这些算法了解不多,但我的印象是我拥有的数据集非常小,而且我在我的个人家用计算机上运行它。这只是实现本身的问题还是由于我的机器的限制?
除了在具有更多内存的服务器上运行它之外,你们中的任何人是否知道如何让它工作(即另一个软件或算法)?
谢谢!
回溯:
Traceback (most recent call last):
File "<wingdb_compile>", line 65, in <module>
File "C:\Python27\lib\site-packages\networkx\drawing\layout.py", line 242, in fruchterman_reingold_layout
pos=_fruchterman_reingold(A,dim,pos_arr,fixed,iterations)
File "C:\Python27\lib\site-packages\networkx\drawing\layout.py", line 280, in _fruchterman_reingold
delta = np.zeros((pos.shape[0],pos.shape[0],pos.shape[1]),dtype=A.dtype)
MemoryError
最佳答案
我意识到这是一个老问题,但 NetworkX
仍然存在内存问题,尤其是在处理社区
等算法时。
查看 graph-tool 。它是一个 python
包,其性能比 NetworkX
我不隶属于graph-tool
。它为我解决了在大型网络上运行算法时的内存问题。
尝试将您的节点
转换为整数
(如果您尚未这样做)。我发现标记为字符串的节点会占用大量内存。
祝大家交流愉快
关于小数据集上的 Python networkx 内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9894839/