使用node2创建嵌入

2024-06-16 11:06:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用networkx和node2vec为一个边缘列表创建嵌入。我的边缘列表如下所示:

1 2
1 6
...
450 230
...
601 602 

它基本上是一个未加权的无向图,存储在一个文本文件中。我尝试使用以下方法将其转换为图形:

^{pr2}$

在哪里参数输入提供文本文件。read_edgelist函数正确读取节点,并正在创建嵌入。但是,在embeddings文件中,节点的编号不是1到606(这些是我的边缘列表中的节点值):相反,它们的编号是14,数字为0-9,一些特殊字符作为节点值,而不是为其创建了嵌入。它是一个整数,而不是一个整数。我不明白为什么会发生这样的事情,我希望你能有所了解。在


Tags: 方法函数networkx图形列表read参数节点
2条回答

我建议您使用stellargraph library,它为机器学习提供了很好的图形算法。例如基本的Node2Vec。。。在

from stellargraph.data import BiasedRandomWalk
from stellargraph import StellarGraph
from gensim.models import Word2Vec

rw = BiasedRandomWalk(StellarGraph(g_nx))

walks = rw.run(
      nodes=list(g_nx.nodes()), # root nodes
      length=100,  # maximum length of a random walk
      n=10,        # number of random walks per root node 
      p=0.5,       # Defines (unormalised) probability, 1/p, of returning to source node
      q=2.0        # Defines (unormalised) probability, 1/q, for moving away from source node
)

model = Word2Vec(walks, size=128, window=5, min_count=0, sg=1, workers=2, iter=1)

model.wv['29']

我通过在主.pynode2vec存储库文件:

walks = [map(str, walk) for walk in walks]

相关问题 更多 >