Networkx统计推断

BKS*_*BKS 6 python graph social-networking networkx

我有一个有向加权图,我使用networkx成功创建.

我试图在这个网络上产生一些统计推断,但我遇到了麻烦.他们来了:

(i)网络的平均程度.(我唯一能找到的是average_degree_connectivity,它返回一个字典而不是一个浮点数,具有整个网络的平均度)

(ii)网络的平均加权程度.(与上述相同)

(iii)网络的平均聚类系数.(我知道我必须使用nx.average_clustering(g),但是如何考虑它是加权有向图这一事实?我不断收到错误:NetworkXError :('Clustering algorithms are not defined','for有向图.'))

谢谢!

Mar*_*ler 7

(i)网络的平均程度.(我唯一能找到的是average_degree_connectivity,它返回一个字典而不是一个浮点数,具有整个网络的平均度)

假设您的Graph对象是G.

degrees = G.degree()
sum_of_edges = sum(degrees.values())
Run Code Online (Sandbox Code Playgroud)

计算平均值只是除以节点数量的问题.

(ii)网络的平均加权程度.(与上述相同)

获取所有节点的列表,为每个节点获取所有边的列表,为每个节点总结权重属性:

edgesdict = G.edge
total = 0
for node_adjacency_dict in edgesdict.valuess():
    total += sum([adjacency.get("weight",0) for adjacency in node_adjacency_dict.values()]) 
Run Code Online (Sandbox Code Playgroud)

(iii)网络的平均聚类系数.(我知道我必须使用nx.average_clustering(g),但是如何考虑它是加权有向图这一事实?我不断收到错误:NetworkXError :('Clustering algorithms are not defined','for有向图.'))

关键是在定义它之前它没有明确定义.我认为,对于StackOverflow答案来说,这有点多了,所以我给你留下了为你的特定问题定义算法的问题.

(iv)网络巨大组件中的最大最短路径长度.(我知道你发现巨大的组件是这样的:giant = max(nx.connected_component_subgraphs(G),key = len)但是我们如何得到最大的最短路径长度呢?)

运行ipython或其他东西.输入giant.; 你会得到一些你可以做的事情清单giant.

  • 请记住,从 networkx v2.0 开始,`G. Degree()` 不再返回字典,而是返回类似字典的 `DegreeView` 对象,因此 `G. Degree().values()` 将返回错误。您可以做的就是通过内置的“dict(G. Degree())”将对象转换为字典并调用“values()”,或者使用“DegreeView”之类的内容迭代“DegreeView”对象[deg for (node, deg) in G. Degree()]` 并从那里计算 `sum()`。 (2认同)