我正在尝试实现 Barabasi-Albert 模型,但在 network.add_edge(new_node,node) 处收到 ValueError“没有一个不能成为节点”。我尝试过滤列表,以便不存在任何 None 元素,但它似乎不起作用。这是代码:
def ba_network(N, m, seed_net_size=4):
# Generate initial small seed network (clique of seedsize nodes)
network = nx.complete_graph(seed_net_size)
for i in range(N):
degrees = [value for (node, value) in network.degree()]
sum_of_degrees = sum(degrees)
degrees_prob = [float(value)/sum_of_degrees for (node, value) in network.degree()]
chosen = np.random.choice(network, m, p=degrees_prob,replace=False)
edges = []
new_node = network.add_node(1)
nodes = list(filter(lambda node: node is not None, chosen))
for node in nodes:
network.add_edge(new_node,node)
return network
只需检查数据即可。如果您的任何数据点无效 例如
Null
或 None
,您将遇到此错误。