You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Jaccard距离矩阵(阈值0.5)构建NetworkX图

基于Jaccard距离矩阵构建NetworkX图

需求说明

我们有观测值的Jaccard距离对角矩阵,要构建NetworkX图,规则是仅当两个节点的Jaccard距离大于0.5时,在它们之间添加边。比如给定示例矩阵:

A,   B,   C

A 1 0.4 0.7
B 0.4 1 0.6
C 0.7 0.6 1

最终图里的边应为:A-C、B-C。


实现步骤

  • 先导入依赖库:

    import networkx as nx
    import pandas as pd
    
  • 定义节点和距离矩阵:
    用DataFrame存储矩阵,方便对应节点名称:

    # 节点列表
    nodes = ["A", "B", "C"]
    # 距离矩阵数据
    distance_data = [
        [1, 0.4, 0.7],
        [0.4, 1, 0.6],
        [0.7, 0.6, 1]
    ]
    # 转为DataFrame,索引和列名对应节点
    df = pd.DataFrame(distance_data, index=nodes, columns=nodes)
    
  • 创建图并添加符合条件的边:

    # 初始化无向图
    G = nx.Graph()
    # 添加所有节点
    G.add_nodes_from(nodes)
    
    # 遍历节点对(避免重复处理A-B和B-A)
    for i in range(len(nodes)):
        for j in range(i+1, len(nodes)):
            node1 = nodes[i]
            node2 = nodes[j]
            # 获取两个节点的Jaccard距离
            dist = df.loc[node1, node2]
            # 满足条件则添加边
            if dist > 0.5:
                G.add_edge(node1, node2)
    
  • 验证结果:
    打印边列表确认是否符合预期:

    print("图中的边:", list(G.edges()))
    # 输出应为:图中的边: [('A', 'C'), ('B', 'C')]
    
  • 可选:可视化图
    如需直观查看结构,可用NetworkX绘图功能:

    import matplotlib.pyplot as plt
    nx.draw(G, with_labels=True, node_size=1500, font_size=12)
    plt.show()
    

内容的提问来源于stack exchange,提问作者Solomon123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 15:43:14