计算投影
现在请您动手,将一个二分图在其中一侧的节点上进行投影。这有助于练习在二分图与其单分量投影之间的转换。请回忆视频中的要点:图在某一分区上的"投影",是指该分区内节点之间的连通性,以它们与另一分区节点的连接为条件。更具体地,您可以把它理解为"基于共同购买行为的顾客连通性"。
先给您一个关于列表推导式的小提示。列表推导式可以包含条件,因此如果您想按某类节点筛选图,可以这样写:[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 的投影。将结果分别存为peopleG和clubsG。- 该函数接收两个参数:图
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 = ____