networkx 算法中是不是有一个函数可以返回我指定的某些节点周围的集团/集群/组件?
Posted
技术标签:
【中文标题】networkx 算法中是不是有一个函数可以返回我指定的某些节点周围的集团/集群/组件?【英文标题】:Is there a function in networkx algorithm that returns the cliques/clusters/components around certain nodes that I specify?networkx 算法中是否有一个函数可以返回我指定的某些节点周围的集团/集群/组件? 【发布时间】:2021-08-21 08:37:35 【问题描述】:我在电信 CDR 数据中使用 networkx 来定义网络影响者及其影响圈。我将影响者定义为特征向量中心性高于某个阈值的节点,但我仍然无法定义他们的影响圈,即与影响者节点直接连接的节点,距离 = 1。我们有一个函数在networkx 也一样吗?顺便说一下,我的图是有向图。
G = nx.DiGraph()
G = nx.from_pandas_edgelist(CDR1, 'A', 'B', ['WEIGHT'], create_using=nx.DiGraph())
df = pd.DataFrame(dict(
DEGREE = dict(G.degree),
DEGREE_CENTRALITY = nx.degree_centrality(G),
CLUSTERING = nx.clustering(G),
EIGENV_CENTRALITY=nx.eigenvector_centrality(G)
))
df['Influencer']=np.where(df['EIGENV_CENTRALITY']> 1.022186e-05,1,0)
【问题讨论】:
【参考方案1】:假设你有一个无向图,这是
G.neighbors(node)
如果它是定向的并且你想要从节点到达的那些,它又是
G.neighbors(node)
或G.successors(node)
也可以。
如果它是定向的,并且您只想要那些与节点有边缘的人
G.predecessors(node)
【讨论】:
但是它们会返回一个迭代器,而不是一个列表。如何获取影响圈内的用户数量列表? 要将迭代器转换为列表,只需执行list(G.neighbors(node))
。
从 G.successors(node) 返回的列表是关键迭代器的列表。应用 list() 函数不会改变任何东西。它仍然是一个关键迭代器列表。
你有什么版本的networkx?对我来说:H=nx.DiGraph()
....H.add_edge(1,2)
....list(H.successors(1))
得到输出[2]
。【参考方案2】:
我已经找到了我的问题的答案。我使用了以下代码行:
circle_pre=[]
for inf in influencers_pre.index:
for n in G_pre.neighbors(inf):
circle_pre.append(n)
len(circle_pre)
其中 circle_pre 是直接连接到影响者节点的节点名称列表,我将其定义为影响圈。
【讨论】:
以上是关于networkx 算法中是不是有一个函数可以返回我指定的某些节点周围的集团/集群/组件?的主要内容,如果未能解决你的问题,请参考以下文章