使用Python绘制加权二分图遇AmbiguousSolution错误求助
解决二分图AmbiguousSolution错误的方案
错误原因
AmbiguousSolution错误出现是因为你的图是不连通的——存在孤立节点(比如某个国家所有属性都未达标,或某个属性没有国家满足阈值),导致bipartite.sets()无法自动确定整个图的二分划分规则。
可行解决方法
手动构造二分节点集
既然你明确知道图的两个分部是「国家」和「属性」,直接手动提取即可,无需依赖函数自动推断:# 提取所有国家节点 country_nodes = set(df['Country'].unique()) # 提取所有属性节点 attribute_nodes = set(attributes_n)后续使用二分图相关功能时,直接传入这两个集合即可。
调用函数时指定基准节点
若一定要用bipartite.sets(),可以传入一个已知属于某一分部的节点作为基准,让函数以此为依据划分整个图:# 取第一个国家作为基准节点 base_node = df['Country'].iloc[0] country_set, attribute_set = bipartite.sets(B, top_nodes={base_node})删除孤立节点
如果孤立节点对分析无意义,可先清理掉,确保图的连通性符合函数要求:# 删除所有无连接的孤立节点 B.remove_nodes_from([node for node in B.nodes() if B.degree(node) == 0]) # 此时再调用划分函数 country_set, attribute_set = bipartite.sets(B)
内容的提问来源于stack exchange,提问作者Pratiksha Singh
相关产品推荐
相关产品推荐

