为networkx中的节点和边生成特征向量

2 投票
1 回答
2646 浏览
提问于 2025-04-18 15:51

我想用 networkx 创建一个图,这个图里的节点和边都有属性。我知道每个节点和边都可以创建一个属性的映射表(字典)。不过,我需要为每个节点和边创建一个特征向量,以便用 scikit-learn 来训练分类器。我不想单独创建一个特征矩阵,让每一行代表一个节点的特征。相反,我想把特征向量直接放在 networkx 图里。所以我想要的效果是这样的:

node = Graph.get_node(i)
feature_vec = node.get_features_vector()

有没有简单又符合 Python 风格的方法来做到这一点,而不需要写“包装器”?

1 个回答

0

你可以把一个numpy数组作为节点的属性。可以这样做:

In [1]: import networkx as nx

In [2]: import numpy as np

In [3]: G = nx.Graph()

In [4]: feature_vector=np.array([1,7,22])

In [5]: G.add_node(1,v=feature_vector)

In [6]: G.node[1]['v']
Out[6]: array([ 1,  7, 22])

撰写回答