如何解决NetworkX MultiDiGraph:向现有节点添加新属性
所以我在尝试 MultiDiGraph 时遇到了这种情况,希望得到一些指导:
G = nx.MultiDiGraph()
setA= ['a','b','c','d','e','f']
G.add_nodes_from(setA,entity='typeA')
setB = ['a','x','y','z']
G.add_nodes_from(setB,entity='typeB')
print([node[0] for node in G.nodes(data='entity') if node[1]=='typeA'])
显然,这会导致覆盖节点 'a' 的 'entity' 属性并打印 '['b','f']'
因为我怀疑这是故意的 在 NetworkX 方面,对于我想要实现的目标,是否有任何可行的解决方法?
非常感谢~
解决方法
我同意@Νίκος Γιαλίτσης。 One-Hot Encoding 是一种普遍可行的方式。此外,networkx.MlutiDiGraph 数据是一个节点(或边元组)绑定了一个属性 dict,也就是说,任何 python dict 格式都有意义!例如:
G = nx.MultiDiGraph()
setA = ['a','b','c','d','e','f']
G.add_nodes_from(setA,entity={"typeA":True,"typeB":False})
# or
entityA = {"typeA":True,"typeB":False}
G.add_nodes_from(setA,entity=entityA)
attr = {"entity": entityA} # or simply assign entityA to attr.
G.add_nodes_from(setA,**attr)
G.add_nodes_from(setA,entity=[True,False],entity_label=["typeA","typeB"])
G.add_nodes_from(setA,entity=list(entityA.values()),entity_label=list(entityA.keys()))
……
那么问题仍然是如何获取每个节点类型的值。 (为每种类型设置二进制权重,并计算双向 Xor 可能是一个不错的选择。) PS:同样可以添加边缘属性。属性模式将展开为实体类型图的相邻矩阵。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。