首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >快速计算特征向量中心性在网络中花费的时间太长了

快速计算特征向量中心性在网络中花费的时间太长了
EN

Stack Overflow用户
提问于 2019-06-21 16:46:33
回答 2查看 1.4K关注 0票数 3

我使用networkx计算特征向量中心性。问题是它花的时间太长(已经运行了大约6个小时)。有更快的方法来获得结果吗?

图中大约有200000个节点和6000万个边。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-21 17:45:54

通过查看源代码,networkx.algorithms.centrality.eigenvector使用幂方法来查找领先的特征向量。

如果你坚持使用networkx ,就像Joel注意到的那样使用它:

numpy

代码语言:javascript
运行
复制
centrality = nx.eigenvector_centrality_numpy(G)

Alternatively:

您可以使用使用ARPACK的scipy.sparse.linalg.eigs,并且只请求返回一个特征向量。

玩具例子:

代码语言:javascript
运行
复制
import scipy.sparse as sparse

X = np.array() # dimensions 200000 by 200000 as the adjacency
# Note: k=1 and you request the Largest real.
vals, vecs = sparse.linalg.eigs(X, k=1, which='LR')

在任何情况下,2000000乘200000是大的,根据稀疏性和矩阵的性质,该算法可能需要很长时间。您还需要大量的CPU和RAM。

关于networkx.algorithms.centrality.eigenvector**:**的附加提示

如果您坚持使用networkx,请尝试放松容忍:

eigenvector_centrality(G, max_iter=100, tol=1e-06, nstart=None, weight=None)

尝试设置tol=1e-04甚至tol=1e-03

票数 2
EN

Stack Overflow用户

发布于 2019-06-21 23:57:31

尝试使用numpy。从文件中:

该算法利用SciPy稀疏特征值求解器(ARPACK)寻找最大特征值/特征向量对。

因此,这将进行serafeim的计算,只需进行一点点额外的处理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56707517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档