我想申请" graph2vec"代码到我自己的数据集。但是,我无法弄清楚如何正确格式化输入数据,也无法理解" github"中可用的示例的输入数据格式。作者的页面。我的数据集中的网络具有整数节点和二进制标签,因此它是具有三列的数据帧。如果有人能指出我正确的方向,我感激不尽。
" graph2vec"在github上:https://github.com/MLDroid/graph2vec_tf
" graph2vec"在arxiv:https://arxiv.org/pdf/1707.05005.pdf
答案 0 :(得分:1)
在make_graph2vec_corpus.py
文件graph2vec
中,您可以阅读
graphs = [nx.read_gexf(fname) for fname in fnames]
表示图形文件是通过read_gexf
包的networkx
方法读取的。实际上,除非您更改该代码,否则数据必须位于GEXF format。
GEXF文件以XML格式编码,它们包含一个名为gexf
的主要元素,其中包含一个元素graph
,该元素同样包含三个子元素:attributes
,{{1} }和nodes
。
在我们的例子中,edges
元素只有一个子元素:
attributes
这意味着对于包含节点的数字属性的属性,您需要属性编号<attribute id="0" title="Label" type="string" />
(例如,如果您的图形是句子的依赖关系树,那么该属性可以是您的单词的索引嵌入,或再次其POS标签,或其他)。 0
元素包含一个
nodes
图表的每个节点的子节点。其中, <node id="0" label="0">
<attvalues>
<attvalue for="0" value="3" />
</attvalues>
</node>
子元素包含节点的数字属性。最后,attvalue
元素包含一个孩子
edges
对于图的每个边缘:这里我们将边的标签作为属性 <edge id="0" source="0" target="1" />
,将源节点的标签作为id
,将目标节点的标签作为source
}。
如果您想查看示例GEXF文件,它们位于target
包内的data.tar.gz
存档中。
除了每个单独图形的数据(由具有数字属性和边缘的节点组成)之外,您还需要在训练数据中提供图形类。这些文件存储在扩展名为graph2vec
的文件中,每个图表包含一行:
.Labels
其中0.gexf 6
是包含图表的GEXF文件的名称,0.gexf
是其类。