开始使用免费开始使用

计算投影

现在请您动手,将一个二分图在其中一侧的节点上进行投影。这有助于练习在二分图与其单分量投影之间的转换。请回忆视频中的要点:图在某一分区上的"投影",是指该分区内节点之间的连通性,以它们与另一分区节点的连接为条件。更具体地,您可以把它理解为"基于共同购买行为的顾客连通性"。

先给您一个关于列表推导式的小提示。列表推导式可以包含条件,因此如果您想按某类节点筛选图,可以这样写:[n for n, d in G.nodes(data=True) if d['key'] == 'some_value']

本练习是课程的一部分

Python 网络分析中级

查看课程

练习说明

  • 使用列表推导式准备 people 节点列表。若 G 中某个节点 n'bipartite' 关键字等于 'people',则该节点应包含在该列表中。
  • 通过遍历 G 的节点并"包含"元数据来准备 clubs 节点列表。此处需注意,您需要检查元数据字典 d'bipartite' 关键字是否等于 'clubs'。注意:这只是创建节点列表的另一种方式。您不必遍历元数据——也可以像创建 people 节点列表那样,只检查 'clubs'。此处要求您使用另一种方法,是为了同时练习两种写法。
  • 使用 nx.bipartite.projected_graph() 计算 people 与 clubs 的投影。将结果分别存为 peopleGclubsG
    • 该函数接收两个参数:图 G 和节点列表。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Prepare the nodelists needed for computing projections: people, clubs
# This exercise shows you two ways to do it, one with `data=True` and one without.
people = [n for n in G.nodes() if G.nodes[____]['____'] == '____']
clubs = [n for n, d in G.nodes(data=True) if d['____'] == '____']

# Compute the people and clubs projections: peopleG, clubsG
peopleG = ____
clubsG = ____
编辑并运行代码