如何从cdlib输出的NodeClustering对象中提取社区聚类数据
cdlib NodeClustering对象社区聚类结果提取方法
你调用社区检测算法返回的NodeClustering对象提供了多个公开API可以直接提取所需结果,不建议直接访问内部data属性,推荐使用以下稳定接口:
- 获取所有社区的节点集合
调用coms.communities属性,返回值为嵌套列表,每个子列表对应一个社区包含的所有节点ID。 - 获取节点到社区的映射关系
调用coms.to_node_community_map()方法,返回值为字典,键为节点ID,值为该节点所属的社区索引列表(重叠社区检测算法下单个节点可能属于多个社区,非重叠算法如Louvain返回的列表长度为1)。 - 转换为DataFrame格式
调用coms.to_df()方法,直接返回包含node(节点ID)和community(所属社区索引)两列的Pandas DataFrame,适合后续数据处理。
完整使用示例:
from cdlib import algorithms import networkx as nx # 构造测试图 G = nx.karate_club_graph() # 执行Louvain社区检测 coms = algorithms.louvain(G) # 示例1:打印所有社区 print("所有社区节点列表:") for idx, comm in enumerate(coms.communities): print(f"社区{idx}:{comm}") # 示例2:查询单个节点所属社区 target_node = 0 node_comm = coms.to_node_community_map()[target_node][0] print(f"\n节点{target_node}所属社区索引:{node_comm}") # 示例3:导出为DataFrame df = coms.to_df() print("\nDataFrame格式结果前5行:") print(df.head())
内容的提问来源于stack exchange,提问作者younes_khosravi
相关产品推荐
相关产品推荐

