微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 networkx 上的权重从邻接矩阵创建网络

如何解决使用 networkx 上的权重从邻接矩阵创建网络

这是我的问题:从我创建的 HMM 模型中,我想使用转换矩阵(从一个状态到另一个状态的概率)作为邻接矩阵创建一个网络。此矩阵中没有 0,对角线上也没有,因为您可以再次从状态 1 转到状态 1。 我如何确定创建的网络实际上是在使用权重(转换矩阵中的值)来创建社区?

我正在使用以下代码

import community
import networkx as nx

G = nx.from_numpy_matrix(tm,parallel_edges=False,create_using=None)

# Relabel nodes
G = nx.relabel_nodes(G,{i: f"node_{i}" for i in G.nodes})

# Compute partition
partition = community.best_partition(G)

# Get a set of the communities
communities = set(partition.values())

# Create a dictionary mapping community number to nodes within that community
communities_dict = {c: [k for k,v in partition.items() if v == c] for c in communities}
communities_dict

并且输出有意义:5 个社区(0 到 4)将 25 个节点(从 0 到 24)分组

{0: ['node_0','node_1','node_14','node_17'],1: ['node_5','node_10','node_11','node_12'],2: ['node_2','node_20','node_24'],3: ['node_3','node_8','node_9','node_15','node_18','node_22'],4: ['node_4','node_6','node_7','node_13','node_16','node_19','node_21','node_23']}

我注意到这里有一篇关于他们使用的堆栈溢出的帖子

partition = community.best_partition(G,weight='weights')

我尝试实现它,结果很糟糕:每个节点都是一个社区(25 个节点上总共有 25 个社区)。

我的问题是:我对第一个代码做得好吗?或者正确的一个是返回坏社区的另一个

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。